假设我们有一个包含字段 'id' 和 'num' 的表 'item',还有一个像下面这样不起作用的代码。
$db = new mysqli('localhost', 'user', 'pass', 'db') ;
if (!$st = $db->prepare('select id from item')) die($db->error) ;
if (!$st2 = $db->prepare('update item set num = 1 where id = ?')) die($db->error) ;
$st->execute() ;
$st->bind_result($id) ;
while ($st->fetch()) {
$st2->bind_param('i', $id) ;
$st2->execute() ;
echo $id.'<br/>' ;
}
它只是打印出类似^ 1 2 3 的内容,但不会更改数据库的id($st2->affected_rows 等于零)。它出什么问题了?
PS 不是真正的代码,但它完全描述了问题。