绑定布尔值的 bind_param 问题

Posted

技术标签:

【中文标题】绑定布尔值的 bind_param 问题【英文标题】:bind_param problem with binding boolean values 【发布时间】:2010-10-02 08:39:05 【问题描述】:

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

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 可以与布尔值一起使用吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

由于您需要绑定的实际上是一个整数,所以我会将 'd'(double) 替换为 'i':

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

【讨论】:

以上是关于绑定布尔值的 bind_param 问题的主要内容,如果未能解决你的问题,请参考以下文章

绑定到布尔值的可见性的 TargetNullValue

删除具有绑定布尔值的列表项 - SwiftUI

函数不起作用:PHP 致命错误:在布尔值上调用成员函数 bind_param()

如何使用准备好的语句将布尔值放入 mysql 数据库?

mvc 绑定/发布布尔到单选按钮

根据布尔值更改 Xamarin 表单标签的文本