我在PHP5中使用mysqli_stmt :: bind_param绑定布尔值时遇到问题。
SQL查询如下:插入nvp_notes
(subject,messageid,receivedate,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适用于布尔值?
答案 0 :(得分:10)
您可以使用intval()将布尔值转换为1或0(或使用(int)或(整数)转换它)。根据{{3}},你可以绑定的唯一类型是整数,双精度数,字符串和blob。
答案 1 :(得分:0)
感谢您的回答,我终于设法解决了问题(在尝试类型转换后,甚至通过将其固定为查询中的1或0而将其从bind_param中删除)。无论如何,'read'是MySQL中的保留列名,所以我只是更改了列名,它工作正常。对于这类问题,接收特定错误消息似乎很奇怪。
答案 2 :(得分:0)
你需要绑定的实际上是一个整数,我会用'我'来打开'd'(双精度):
$ stmt-> bind_param('sisi',...);