最近我在做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对象必须完整读取到尾部,否则下次执行就会失败吗?谢谢各位!
1 回答
- 1 回答
- 0 关注
- 475 浏览
添加回答
举报
0/150
提交
取消