Bind_param值为0

时间:2016-06-18 09:32:58

标签: mysqli bindparam

当我执行时:

$tmp = 0;
$stmt->bind_param('i', $tmp);

我收到错误:No data supplied for parameters in prepared statement

我必须这样做 $tmp = "0"; $stmt->bind_param('i', $tmp);工作。这是正常的吗? 仅当我插入0时才会出现此问题。任何其他整数工作。

1 个答案:

答案 0 :(得分:0)

标记错误的

确保所有参数都在语句定义和:中以bind_param()作为前缀。

$PHPPDO->prepare('SELECT * FROM users WHERE status =:i');

$tmp = 0;
$stmt->bind_param(':i', $tmp);

不太可能,但对于您正在使用的任何版本的PHP / PHPPDO,这可能是一个数据类型杂耍问题。

尝试使用intval()和/或明确声明数据类型(取决于php版本)。

$tmp = (int) 0;  // php < 5.1
$tmp = intval(0); // php 5.2+ (though on these versions, it probably isn't the datatype.

旧版本的PHPPDO(和PHP):MySql vs MS SQL。

MySql有一些内置类型的杂耍,例如,NULL参数发送到UPDATEINSERTINT列,将转换为{{ 1}}。但是,旧版本的MS SQL不会为您执行此类型操作。