PHP5 sqli bind_param问题与绑定布尔值

时间:2009-01-19 23:57:59

标签: php mysqli boolean prepared-statement

我在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适用于布尔值?

3 个答案:

答案 0 :(得分:10)

您可以使用intval()将布尔值转换为1或0(或使用(int)(整数)转换它)。根据{{​​3}},你可以绑定的唯一类型是整数,双精度数,字符串和blob。

答案 1 :(得分:0)

感谢您的回答,我终于设法解决了问题(在尝试类型转换后,甚至通过将其固定为查询中的1或0而将其从bind_param中删除)。无论如何,'read'是MySQL中的保留列名,所以我只是更改了列名,它工作正常。对于这类问题,接收特定错误消息似乎很奇怪。

答案 2 :(得分:0)

你需要绑定的实际上是一个整数,我会用'我'来打开'd'(双精度):

  

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