9

mysqli_stmt::bind_param在 PHP5 中使用绑定布尔值时遇到问题。

SQL 查询如下:

insert into `nvp_notes` (subject,messageid,receivedate,read) values (?,?,?,?)

'read' 是一个 tinyint,0 或 1,因为我在使用 mysqli 时遇到了一些问题。所以我在 bind_param 中列出的类型是:

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

我也尝试过 'sdsb' 和 'sdss' 但似乎没有任何效果,而且我总是收到以下信息:

警告:mysqli_stmt::bind_param():变量数与准备语句中的参数数不匹配

当我删除语句中的读取字段时,一切正常。我已经没有这个想法了。当然 bind_param 与布尔值一起使用?

4

3 回答 3

13

您可以使用intval()将布尔值转换为 1 或 0 (或使用(int)(integer)进行转换)。根据mysqli_stmt::bind_param() 的文档,您可以绑定的唯一类型是整数、双精度、字符串和 blob。

于 2009-01-20T00:06:12.087 回答
1

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

于 2009-01-20T11:33:26.893 回答
0

因为你需要绑定的实际上是一个整数,所以我会用 'i' 来切换 'd'(double):

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

于 2014-07-12T11:16:36.963 回答