设置了非缓冲查询(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY)以后,连续query会导致下一次结果为false
$conn = "mysql:host=127.0.0.1;dbname=test_lkc"; $db = new PDO($conn, 'root', 'root'); $db->query("set names utf8"); $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); $delSql = "SELECT * FROM test_table"; $i=1; while ($i < 3){ $i++; $res = $db->query($delSql); var_dump($res); }
解决办法
1、每次query的结果用完以后,unset()或者重新赋值
2、query以后的结果我们一般会用fetch()函数去获取结果,如果用while($res->fetch())不会出现上诉问题