Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Не получается создать запрос MySQL
При выводе ошибка SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens<br />/var/www/zk.net/www/cpanel/db/CPGoSQLDb.php on line 63
Т.е. ругается что не соответствуют количество параметров, но блин, их в запросе 2 и в массиве 2. Причем если убрать WHERE, то норм работает, значит проблема в нем. Видимо не туда вставил, тогда как?
KingStar
Отправлено: 18 Апреля, 2014 - 08:46:14
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
LEFTJOIN categories ON categories.id = articles.category
----- То что программа работает, не означает что она написана правильно!
pro_xaoc
Отправлено: 18 Апреля, 2014 - 09:05:22
Гость
Покинул форум
Сообщений всего: 92
Дата рег-ции: Февр. 2011
Помог: 0 раз(а)
условие WHERE я не могу убрать, т.к. именно это мне и нужно. А в чем смысл перестановки categories.id = articles.category? Хотя попробовал - ничего не дало.
DlTA
Отправлено: 18 Апреля, 2014 - 09:12:42
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
pro_xaoc пишет:
rticles.category =:
а что это за такое сравнение? (Добавление)
pro_xaoc пишет:
LIMIT 0,:lim_end
и тут че за хрень?
pro_xaoc
Отправлено: 18 Апреля, 2014 - 09:23:58
Гость
Покинул форум
Сообщений всего: 92
Дата рег-ции: Февр. 2011
Помог: 0 раз(а)
DlTA, это не хрень, это именованные плейсхолдеры ... возможно проблему решил, тестирую ...
Мелкий
Отправлено: 18 Апреля, 2014 - 09:35:13
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
DlTA пишет:
а что это за такое сравнение?
См. описание PDO::prepare
Удобнейшая вещь.
pro_xaoc, во-первых, перепроверьте, что ошибка именно там, где вы код редактируете. Перед непосредственно execure выведите и запрос и готовый массив параметров.
Так же, насколько помню, pdo некорректно подставляет данные для limit'а, если PDO::ATTR_EMULATE_PREPARES=true - а так оно стоит по-умолчанию. Но там ошибка будет уже sql, а не param number
----- PostgreSQL DBA
DlTA
Отправлено: 18 Апреля, 2014 - 09:41:40
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Мелкий пишет:
См. описание PDO::prepare
Удобнейшая вещь.
проще говоря это не запрос а шаблон запроса?
pro_xaoc
Отправлено: 18 Апреля, 2014 - 09:52:56
Гость
Покинул форум
Сообщений всего: 92
Дата рег-ции: Февр. 2011
Помог: 0 раз(а)
DlTA, именно. Мелкий, как вы и сказали, ошибку допустил в другом месте, в функции где выполняется execute. С limit я разобрался с конструкцией
. Но теперь код SQL работает не так, как мне надо. Нужно вывести из таблицы articles только те, у которых category=<category>, которых я подставляю потом. Нижеприведенным кодом, возвращается пустой ответ:
SELECT articles.category, articles.id, articles.title, articles.publication, articles.author, articles.access, articles.add_date, categories.description FROM articles LEFTJOIN categories ON articles.category=categories.id AND articles.category=:category LIMIT0,:lim_end
в таком случае возвращается все материалы и еще, значение category.description - NULL.
Не пойму, почему так ... (Добавление)
Пардон, снова моя ошибка В общем, спасибо за участие
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.