如何在一个MySQL查询中组合两个PDO语句?

时间:2012-06-14 17:46:25

标签: php mysql pdo

根据我现在所知的PDO语句和我在localhost和Google上的经验 - 在一个查询中使用多个PDO语句存在一些困难。例如这种情况:

$stmt = $db_people->prepare("SELECT * FROM people WHERE online=1");
$stmt->execute();
$results_people = $stmt->fetch(PDO::FETCH_ASSOC);

在这个查询中,我可以像fetch一样执行简单的PDO语句(在示例中)。但是,当我想使用这样的PDO语句时:

$rows = $stmt->rowCount();

这是不可能的,语句不会返回正确的行数。当我以相反的方式执行它并填充其中一个列名称时 - rowCount正常工作如下:

$stmt = $db_people->prepare("SELECT name FROM people WHERE online=1");
$stmt->execute();
$rows = $stmt->rowCount();

之后添加fetch:

$results_people = $stmt->fetch(PDO::FETCH_ASSOC);

在此示例中无法正常工作。我的问题是 - 如何在一个查询中组合两个不同的PDO语句?谢谢。

1 个答案:

答案 0 :(得分:2)

答案可能取决于您尝试合并的操作。例如,如果您尝试将PDOStatement::rowCount()SELECT SQL操作结合起来,那么可能值得注意PDOStatement::rowCount() description中警告rowCount()的警告对于所有数据库中的SELECT语句,它不是100%可靠。

如果您尝试解决的问题仅限于计算SELECT的结果行,那么另一种方法是使用PDOStatement::fetchAll()并计算返回数组中的行。