Php 使用值0绑定_参数
当我执行:Php 使用值0绑定_参数,php,mysqli,bindparam,Php,Mysqli,Bindparam,当我执行: $stmt = $mysqli->prepare('SELECT * FROM TableName WHERE ColumnName = ?'); $tmp = 0; $stmt->bind_param('i', $tmp); 我收到错误消息: 未为准备语句中的参数提供数据 我必须做以下几点才能让它工作 $tmp = "0"; $stmt->bind_param('i', $tmp); 这正常吗? 此问题仅在插入0时发生。任何其他整数工作。错误地标记了参数 确
$stmt = $mysqli->prepare('SELECT * FROM TableName WHERE ColumnName = ?');
$tmp = 0;
$stmt->bind_param('i', $tmp);
我收到错误消息:
未为准备语句中的参数提供数据
我必须做以下几点才能让它工作
$tmp = "0";
$stmt->bind_param('i', $tmp);
这正常吗?
此问题仅在插入0
时发生。任何其他整数工作。错误地标记了参数
确保在语句定义和bind_param()
中,所有参数都以:
作为前缀
不太可能,但无论您使用的是什么版本的PHP/PHPPDO,都可能存在数据类型转换问题。
尝试使用intval()
,和/或显式声明数据类型(取决于php版本)
$tmp=(int)0;//php<5.1
$tmp=intval(0);//PHP5.2+(尽管在这些版本上,它可能不是数据类型。
旧版本的PHPPDO(和PHP)re:MySql vs MS-SQL。
MySql有一些内置的类型转换,例如,如果将NULL
参数发送到UPDATE
或INSERT
到INT
列,将转换为0
。但是,旧版本的MS SQL不会为您执行此类型转换。错误地标记了参数
确保在语句定义和bind_param()
中,所有参数都以:
作为前缀
不太可能,但无论您使用的是什么版本的PHP/PHPPDO,都可能存在数据类型转换问题。
尝试使用intval()
,和/或显式声明数据类型(取决于php版本)
$tmp=(int)0;//php<5.1
$tmp=intval(0);//PHP5.2+(尽管在这些版本中,它可能不是数据类型。
旧版本的PHPPDO(和PHP)re:MySql vs MS-SQL。
MySql有一些内置的类型转换,例如,如果将
NULL
参数发送到UPDATE
或INSERT
到INT
列,将转换为0
。但是,旧版本的MS SQL不会为您进行这种类型转换。这两种方法都不起作用,因为bind\u参数不接受常量值但仅限变量。我编辑了答案您可以添加要执行的查询吗?SELECT*FROM TableName WHERE ColumnName=?
WHERE?我绑定0(见上文)这篇文章缺少一个最小的、完整的和可验证的示例。这两个示例都不起作用,因为bind_param不接受常量值,而只接受变量。我编辑了答案您可以添加要执行的查询吗?SELECT*FROM TableName WHERE ColumnName=?
WHERE?我绑定0(见上文)这篇文章缺少一个最小的、完整的、可验证的例子。
$PHPPDO->prepare('SELECT * FROM users WHERE status =:i');
$tmp = 0;
$stmt->bind_param(':i', $tmp);
$tmp = (int) 0; // php < 5.1
$tmp = intval(0); // php 5.2+ (though on these versions, it probably isn't the datatype.