gpt4 book ai didi

php - PDO MYSQL 嵌套 COUNT 打破了我的查询

转载 作者:行者123 更新时间:2023-11-29 03:33:37 26 4
gpt4 key购买 nike

我有这样的查询:

$query = $con->prepare("SELECT `Id`, 
(SELECT count(`Id`)
FROM `images`
WHERE `parentId` = :recId) as `numImgs`
FROM `records`
WHERE `id`= :recId LIMIT 1");

$query->execute(array('recId' => $recId));

$rec = $query->fetch(PDO::FETCH_ASSOC);

当我在没有嵌套的 (SELECT Count(Id)) 的情况下执行此操作时,查询有效。如果我取出 SELECT(COUNT(Id)) 并自行执行,它也可以工作。

由于某些原因,上述查询不起作用。我没有收到任何错误,只是没有结果。但是,如果我在 phpMyAdmin 中运行查询,它可以毫无问题地工作并返回两列,Id 和 numImgs,例如:

----------------
| id | numImgs |
----------------
| 50 | 10 |
----------------

我已经测试了我传递的值,它是从 $recId 正确填充的,所以那里没有问题。任何人都可以指出正确的方向,说明这到底出了什么问题吗?

谢谢!

注意:这非常有效,但我不明白为什么我不能用一个查询来完成:

try{
$query = $con->prepare("SELECT `Id`
FROM `records`
WHERE `id`= :recId
AND `ownerId` = :userId
LIMIT 1");
$query->execute(array('recId' => $recId, 'userId' => $userId));
$rec = $query->fetch(PDO::FETCH_ASSOC);
}catch(PDOException $e) {
dump_exception('Exception selecting record.', $e);
}
if($rec){
try{
$picQuery = $con->prepare("SELECT COUNT(`Id`)
FROM `images`
WHERE `parentId`= :recId");
$picQuery->execute(array('recId' => $recId));
$numPics = $picQuery->fetchColumn();
}catch(PDOException $e) {
dump_exception('Exception counting pictures.', $e);
}

最佳答案

您不能使用JOINGROUP BY 吗?如果我答对了你的问题,它看起来会像这样。

SELECT `id`, COUNT(*) AS `numImgs`
FROM `records` r
INNER JOIN `images` i ON i.parentId = r.id
WHERE r.id = :recId
AND r.ownerId = :userId
GROUP BY r.id
LIMIT 1

关于php - PDO MYSQL 嵌套 COUNT 打破了我的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26884625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com