请参见以下PHP代码。
$db = new mysqli($CONF['host'], $CONF['user'], $CONF['pass'], $CONF['name']);
if ($db->connect_errno) {
echo "Failed to connect to MySQL: (" . $db->connect_errno . ") " . $db->connect_error;
}
$db->set_charset("utf8");
$db->autocommit(FALSE);
$db->begin_transaction();
$result= $db->query("update users set is_verified=1 where id=10 and is_verified=0"); //$result is allways true
$affRow = $db->affected_rows; //allways returns -1
//die();
$db->commit();
问题:
$ affRow始终等于-1,即使一行在数据库中受影响。
如果我取消注释die()
代码,则查询会影响数据库,而$db->commit()
尚未执行。
$db->affected_rows
在读取值之前为1。在读取之前,它变为-1,$ affRow也变为-1!为什么会这样?我哪里错了?