高效地计算php内返回的结果

高效地计算php内返回的结果,php,mysql,pdo,count,Php,Mysql,Pdo,Count,使用中的技术:php通过PDO访问MySQL 我有以下疑问: try { $stmt = $conn->prepare("SELECT * FROM $database.appsLodged WHERE `uID` = :uid"); $stmt->bindValue(':uid', $uid); $stmt->execute(); $result = $stmt->fetchAll(); }

使用中的技术:php通过PDO访问MySQL

我有以下疑问:

    try {
        $stmt = $conn->prepare("SELECT * FROM $database.appsLodged WHERE `uID` = :uid");
        $stmt->bindValue(':uid', $uid);
        $stmt->execute();
        $result = $stmt->fetchAll();
    } catch(PDOException $e) { catchMySQLerror($e->getMessage()); }
这相当直截了当。目前,相关数据库中有7行,每行都可能为$result[0][5]返回不同的字符串值。我希望能够计算出有多少结果是$result[0][5]的“鞋子和袜子”,还有多少结果是$result[0][5]的“靴子和裙子”,还有多少结果是$result[0][5]的“套头衫和羊毛衫”——而无需进行多个数据库查询(我知道我们可以通过添加额外的“和
item
=:item”语法和绑定:item到“shoes AND socks”,但这似乎是非常重复和不必要的

欢迎大家提出建议!:)

C

根据以下要求,下面列出了$result数组:

Array
(
[0] => Array
    (
        [id] => 1
        [0] => 1
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Pending
        [5] => Pending
        [dateStarted] => 1421773018
        [6] => 1421773018
        [lastModified] => 1421773018
        [7] => 1421773018
    )

[1] => Array
    (
        [id] => 2
        [0] => 2
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1421774389
        [6] => 1421774389
        [lastModified] => 1421774389
        [7] => 1421774389
    )

[2] => Array
    (
        [id] => 3
        [0] => 3
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1421776146
        [6] => 1421776146
        [lastModified] => 1421776146
        [7] => 1421776146
    )

[3] => Array
    (
        [id] => 4
        [0] => 4
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1421777460
        [6] => 1421777460
        [lastModified] => 1421777460
        [7] => 1421777460
    )

[4] => Array
    (
        [id] => 5
        [0] => 5
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1421781756
        [6] => 1421781756
        [lastModified] => 1421781756
        [7] => 1421781756
    )

[5] => Array
    (
        [id] => 6
        [0] => 6
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422213946
        [6] => 1422213946
        [lastModified] => 1422213946
        [7] => 1422213946
    )

[6] => Array
    (
        [id] => 7
        [0] => 7
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422238026
        [6] => 1422238026
        [lastModified] => 1422238026
        [7] => 1422238026
    )

[7] => Array
    (
        [id] => 8
        [0] => 8
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422369458
        [6] => 1422369458
        [lastModified] => 1422369458
        [7] => 1422369458
    )

[8] => Array
    (
        [id] => 9
        [0] => 9
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422369473
        [6] => 1422369473
        [lastModified] => 1422369473
        [7] => 1422369473
    )

[9] => Array
    (
        [id] => 10
        [0] => 10
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422371233
        [6] => 1422371233
        [lastModified] => 1422371233
        [7] => 1422371233
    )

[10] => Array
    (
        [id] => 11
        [0] => 11
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422371291
        [6] => 1422371291
        [lastModified] => 1422371291
        [7] => 1422371291
    )

[11] => Array
    (
        [id] => 12
        [0] => 12
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422372793
        [6] => 1422372793
        [lastModified] => 1422372793
        [7] => 1422372793
    )

[12] => Array
    (
        [id] => 13
        [0] => 13
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422373414
        [6] => 1422373414
        [lastModified] => 1422373414
        [7] => 1422373414
    )

[13] => Array
    (
        [id] => 14
        [0] => 14
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422373681
        [6] => 1422373681
        [lastModified] => 1422373681
        [7] => 1422373681
    )

[14] => Array
    (
        [id] => 15
        [0] => 15
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422373927
        [6] => 1422373927
        [lastModified] => 1422373927
        [7] => 1422373927
    )

[15] => Array
    (
        [id] => 16
        [0] => 16
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422374004
        [6] => 1422374004
        [lastModified] => 1422374004
        [7] => 1422374004
    )

[16] => Array
    (
        [id] => 17
        [0] => 17
        [appID] => 4
        [1] => 4
        [applicationKey] => ConSupAp
        [2] => ConSupAp
        [applicationName] => Conference Support Application
        [3] => Conference Support Application
        [uID] => 1
        [4] => 1
        [status] => Data Acquisition
        [5] => Data Acquisition
        [dateStarted] => 1422374587
        [6] => 1422374587
        [lastModified] => 1422374587
        [7] => 1422374587
    )

)

重要的是要记住——实际上,我想计算的是“状态”列,除第一个示例外,所有这些示例都设置为“数据采集”。第一个设置为“待定”“。这可能是另外三个值,如果这些值当时不在数据库中,我需要它们的零计数,以便用户知道它们有零数据设置为其他潜在的“状态”设置。

我建议您执行以下操作:首先,您从数据库中获取所有这些字符串,因此,您将有类似于
$result[0][5]
$result[1][5]
$result[2][5]
等的内容,然后您可以
foreach()
对它们进行匹配,并在不同变量中匹配字符串,每个字符串对应一个要匹配的字符串。。。我认为,根据您在查询中所说的,每个uID在[5]位置都有一种类型的字符串。在这种情况下,我建议您有一个id字符串,因此您的查询如下所示:

$uid = '1,2,3,4,5'; // for example
$stmt = $conn->prepare("SELECT * FROM $database.appsLodged WHERE `uID` IN (:uid)");

$stmt->bindValue(':uid', $uid);
您可能需要一个额外的查询来获取所有这些ID,但仅此而已:D


希望这有帮助

对于正确的查询,请检查我的回复的编辑版本:)谢谢您的回复,也很快!很抱歉,我不清楚$uid值-这永远不会更改,因为它是用户ID,因此只会从db表中提取与该特定用户相关的行。它不会改变,因此与实际问题无关。但如何在$result[0][5]中有多个值呢?是否对每个用户重复此查询?此查询是基于帐户进行的,因此每个用户只需要查看与他们相关的数据行。$result[0][5]实际上是一个名为“item”的列,其值可以是五个可能的字符串值之一。我需要计算每个值有多少。foreach用户,对吗?这比我想象的要容易:为什么?因为您有一个foreach,它可以通过所有用户运行。您只需要为您搜索的每个值创建一个变量,当您在该位置遇到给定的字符串时,您可以递增该变量。在foreach的末尾,您将对所有字符串进行计数和说明:)