mysqli bind_param setzt weder $ stmt-> error noch $ stmt-> errno
Laut dem PHP-Handbuch können Sie Fehler in jeder vorbereiteten Anweisungsmethode abrufen, indem Sie $ stmt-> error und $ stmt-> errno abfragen. Die bind_param-Methode scheint diese jedoch niemals auf einen Fehler zu setzen. Kann dies jemand anderes bestätigen? oder sag mir bitte was ich vermisse
Zum Beispiel:
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";
Wenn Sie das Obige über die Befehlszeile ausführen, wird Folgendes angezeigt:
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
Also sieht PHP dies als Warnung, bind_param gibt false zurück, aber error & errno sind nicht gesetzt. execute schlägt ebenfalls fehl und hat error & errno korrekt gesetzt
Ist das ein Bug?