当我执行时:
$tmp = 0;
$stmt->bind_param('i', $tmp);
我收到错误:No data supplied for parameters in prepared statement
我必须这样做
$tmp = "0";
$stmt->bind_param('i', $tmp);
工作。这是正常的吗?
仅当我插入0
时才会出现此问题。任何其他整数工作。
答案 0 :(得分:0)
确保所有参数都在语句定义和:
中以bind_param()
作为前缀。
$PHPPDO->prepare('SELECT * FROM users WHERE status =:i');
$tmp = 0;
$stmt->bind_param(':i', $tmp);
尝试使用intval()
和/或明确声明数据类型(取决于php版本)。
$tmp = (int) 0; // php < 5.1
$tmp = intval(0); // php 5.2+ (though on these versions, it probably isn't the datatype.
MySql有一些内置类型的杂耍,例如,NULL
参数发送到UPDATE
或INSERT
到INT
列,将转换为{{ 1}}。但是,旧版本的MS SQL不会为您执行此类型操作。