PHP5 sqli bind_param проблема со связыванием логических значений - PullRequest
6 голосов
/ 20 января 2009

У меня проблема с привязкой логических значений с помощью mysqli_stmt :: bind_param в PHP5.

SQL-запрос выглядит следующим образом: вставьте в nvp_notes (subject, messageid, receiveate, read) значения (?,?,?,?)

Где read - это tinyint, 0 или 1, так как у меня были проблемы с битами при использовании mysqli. Итак, типы, которые я перечисляю в bind_param:

$stmt->bind_param('sdsd', ...);

Я также пробовал 'sdsb' и 'sdss', но, похоже, ничего не работает, и я всегда получаю сообщение:

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement

Когда я удаляю поле чтения в утверждении, все работает нормально. У меня закончились идеи с этим. Конечно, bind_param работает с логическими значениями ??

Ответы [ 3 ]

10 голосов
/ 20 января 2009

Вы можете преобразовать логическое значение в 1 или 0, используя intval () (или приведите его с помощью (int) или (целое число) ). В соответствии с документацией mysqli_stmt :: bind_param () , единственные типы, которые вы можете связать, это int, double, string и blob.

0 голосов
/ 12 июля 2014

Поскольку то, что вам нужно связать, на самом деле является целым числом, я бы поменял 'd' (double) на 'i':

$ stmt-> bind_param ('sisi', ...);

0 голосов
/ 20 января 2009

Спасибо за ответ, мне наконец удалось исправить проблему (после попытки приведения типа и даже оставив его вне bind_param, исправив его как 1 или 0 в запросе). В любом случае, read - это зарезервированное имя столбца в MySQL, поэтому я просто изменил имя столбца, и оно работает нормально. Кажется странным получать это конкретное сообщение об ошибке, однако для такого рода проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...