根据PHP手册,你可以通过询问stmt- $>错误和$ stmt->错误号但bind_param方法来似乎从来没有设置这些上的错误,可其他人证实了这一检索任何准备好的声明中方法错误? 或者告诉我什么,我缺少的吗?
例如:
echo "Start\n";
$db = new mysqli('localhost','test','xxxxxx','test');
$val = 1;
$st = $db->prepare('insert into tblTest set field1=?');
if($st == false)
{
printf("prepare: %s %d\n",$db->error,$st->errno);
}
$rs = $st->bind_param('is', $val);
if($rs == false)
{
printf("bind_param: %s %d\n",$st->error,$st->errno);
}
$rs = $st->execute();
if($rs == false)
{
printf("execute: %s %d\n",$st->error,$st->errno);
}
$rs = $st->close();
if($rs == false)
{
printf("close: %s %d\n",$st->error,$st->errno);
}
echo "Finish\n";
在命令行显示运行以上:
Start
PHP Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables in test.php on line 14
bind_param: 0
execute: No data supplied for parameters in prepared statement 2031
Finish
所以PHP是看到这是一个警告,bind_param是返回false,但错误与错误号未设置。 执行也是失败的,并已正确设置错误和错误号
这是一个错误?