PDO and nested fetching(PDO 和嵌套获取)
问题描述
假设我有这样的事情:
$db=new PDO($dsn);
$statement=$db->query('Select * from foo');
while ($result=$statement->fetch())
{
//do something with $result
}
我如何在 while 循环中放置另一个查询?即使我创建了一个新的 PDOStatement 对象,它似乎也会覆盖最顶层 PDO 语句的游标.我看到的唯一其他解决方案是 a) 一次获取整个外部循环或 b) 打开 2 个不同的数据库连接.这些似乎都不是一个好主意,还有其他解决方案吗?
How would I put another query inside of that while loop? Even if I make a new PDOStatement object, it seems that that overwrites the cursor for the topmost PDO statement. The only other solution I see is to either a) fetch the entire outer loop at once or b) open 2 different connections to the database. Neither of these seem like a good idea, are there any other solutions?
推荐答案
你应该能够在你的 while 循环中执行任何你想要的其他查询,我想说;像这样:
You should be able to do any other query you want inside your while loop, I'd say ; something like this :
$db=new PDO($dsn);
$statement=$db->query('Select * from foo');
while ($result=$statement->fetch())
{
$statement2 = $db->query('Select * from bar');
while ($result2=$statement2->fetch()) {
// use result2
}
}
你试过了吗?它应该工作...
Did you try that ? It should work...
尽管如此,如果可以(如果您的数据没问题,我的意思是),使用 JOIN 仅执行一个查询可能会提高性能:1 个查询而不是多个查询通常更快.
Still, if you can (if it's OK with your data, I mean), using a JOIN to do only one query might be better for performances : 1 query instead of several is generally faster.
这篇关于PDO 和嵌套获取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PDO 和嵌套获取
基础教程推荐
- PHP 守护进程/worker 环境 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01