最近我在做PHP程序时遇到了一个问题,举个例子:
//开始查询前两个值
$pre=$pdo->prepare('
SELECT * FROM `abc` WHERE `id`=1;
SELECT * FROM `abc` WHERE `id`=2;
');
$pre->execute();
$id1=$pre->fetch(PDO::FETCH_ASSOC);
$pre->nextRowset();
$id2=$pre->fetch(PDO::FETCH_ASSOC);
//开始查询后一个值
$pre=$pdo->prepare('
SELECT * FROM `abc` WHERE `id`=3;
');
$pre->execute();
$id3=$pre->fetch(PDO::FETCH_ASSOC);
这样可以正常返回$id1和$id2的结果。
但如果在第一次查询时不执行$pre->nextRowset();
只查询$id1的话,像这样:
//开始查询前两个值
$pre=$pdo->prepare('
SELECT * FROM `abc` WHERE `id`=1;
SELECT * FROM `abc` WHERE `id`=2;
');
$pre->execute();
$id1=$pre->fetch(PDO::FETCH_ASSOC);
//这次我不查询id2
//开始查询后一个值
$pre=$pdo->prepare('
SELECT * FROM `abc` WHERE `id`=3;
');
$pre->execute();
$id3=$pre->fetch(PDO::FETCH_ASSOC);
会导致$id3的值为空。请问这是什么原理?
$pdo对象必须完整读取到尾部,否则下次执行就会失败吗?
谢谢各位!