$SqlCategory = 'SELECT rid.id,rid.date,rid.user,rid.razdel,rid.v_1,rid.v_2,rid.v_3,rid.title,rid.opis,cid.namec,cid.act,uid.nameu
FROM rid,cid,uid
WHERE rid.user=uid.id
AND rid.razdel=cid.id
AND rid.v_2=0
AND razdel = :cid
ORDER BY rid.date DESC
LIMIT :limit OFFSET :offset';
Дырки есть, менял по другому, ставил вопросительные знаки.
$Query = $connect->prepare($SqlCategory);
$array = [
'cid' => $this->get[1],
'limit' => $Pag['limit'],
'offset' => $Pag['offset']
];
$Query->execute($array);
В общем, на примере выше три параметра, параметры успешно передаются в массив, но execute выдает false, если за комментировать два любых параметра и убрать две дырки, работать будет.
ВСЕ ПЕРЕМЕННЫЕ подставляются хорошо. Ключи менял, не помогает.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''15' OFFSET '0'' at line 1
посмотрите внимательно на фрагмент кода, на который указывает ошибка: 15' OFFESET '0, кавычки тут явно лишние. А появляются они тут, потому что:
Массив значений, содержащий столько элементов, сколько параметров заявлено в SQL-запросе. Все значения будут приняты, как имеющие тип PDO::PARAM_STR.
Для явного указания типов передаваемых значений используйте bindParam()
$Query->bindParam('limit', $Pag['limit'], PDO::PARAM_INT);
и аналогичныо для остальных параметров.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей