Ошибка передачи параметров в PDO execute

224
30 марта 2018, 13:54
$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, если за комментировать два любых параметра и убрать две дырки, работать будет.

ВСЕ ПЕРЕМЕННЫЕ подставляются хорошо. Ключи менял, не помогает.

Answer 1

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);

и аналогичныо для остальных параметров.

READ ALSO
Поиск ключа в многомерном массиве PHP

Поиск ключа в многомерном массиве PHP

Есть массив, многоуровневый (может быть 3 уровня, может 7) Важно найти на каком-бы то не было уровне элемент с ключом "audiofile" и передать его содержимое...

249
Не работает удаленный доступ. MySQL server has gone away, code 2006

Не работает удаленный доступ. MySQL server has gone away, code 2006

Сайт на LaravelЕсть удаленное подключение в mysql бд на windows, которое исправно работает

242
Что писать в action формы

Что писать в action формы

Здравствуйте! На сайте есть форма фильтра:

220