php - mysql:完全匹配?

标签 php mysql count exact-match

我正在从 mysql 中提取一些数据并计算匹配的出现次数(似乎相当于 WHERE foo='bar')。然而,当我在 PHP 中循环数据时,我的计数远低于 mysql 中的计数。

MYSQL> SELECT COUNT(foo) FROM database.table WHERE foo='bar';

# PHP
while ($response = mysql_fetch_assoc($surveydata)){
    if ($response==='bar') {
        $bar++;
    }
}

数据可能包含一个或多个 &,因此我只想匹配 bar 而不是 bar & foobar。我怀疑 mysql 正在计算 barbar & foobar 而 php 只计算 bar 而不是 bar & foobar。 Php 返回 1210,mysql 返回 1783,因此手动计数看看谁是对的是非常实用的......

我用谷歌搜索了一下,但很惊讶没有找到与“mysql完全匹配”或“mysql完全相等”x,x相关的内容

编辑

这是实际的sql

SELECT COUNT(`race`) FROM `database`.`table` WHERE `completion status`='complete';

和实际的 php

mysql_query("SELECT `race`,`etcetera` FROM `database`.`table` WHERE `completion status`='complete';");

$demographics=array(
    "race"=>array(
        "White"=>array('consented'=>0,'partial'=>0,'completed'=>0),
        "Black"=>array('consented'=>0,'partial'=>0,'completed'=>0),
        "Hispanic"=>array('consented'=>0,'partial'=>0,'completed'=>0),
        "Asian"=>array('consented'=>0,'partial'=>0,'completed'=>0),
        "Pacific Islander"=>array('consented'=>0,'partial'=>0,'completed'=>0),
        "Multiracial"=>array('consented'=>0,'partial'=>0,'completed'=>0),
        "Other"=>array('consented'=>0,'partial'=>0,'completed'=>0)
    )
    //more
);

while ($dbrecord = mysql_fetch_assoc($surveydata)) {
    foreach ( $dbrecord as $dbfield=>$dbcellval ) {
        foreach ( $demographics as $demographic=>&$options ) {
            foreach ( $options as $option=>&$counter ) {
                if ( $option==="Multiracial" && strpos($dbcellval,'&') >0 && strpos($dbcellval,'&')!==false ) {
                    if ($dbrecord['consent']==="1"){
                        $demographics["race"]["Multiracial"]['consented']++;
                        if ($dbrecord['completion status']==="partial") {
                            $demographics["race"]["Multiracial"]['partial']++;
                        } // if
                        else if ($dbrecord['completion status']==="complete") {
                            $demographics["race"]["Multiracial"]['completed']++;
                        } // else if
                    } // if
                }
                else if ($option===$dbcellval){
                    if ($dbrecord['consent']==="1"){
                        $counter['consented']++;
                        if ($dbrecord['completion status']==="partial") {
                            $counter['partial']++;
                        } // if
                        else if ($dbrecord['completion status']==="complete") {
                            $counter['completed']++;
                        } // else if
                    } // if
                } // else if $option==$item
            } // foreach $options
        } // foreach $demographics
    } // foreach $dbrecord
} // while

来自 SELECT race FROM database.table 的数据如下所示:

White & Black
White
White & Asian
White & Asian & Black
Asian
Asian & Black
// etc

最佳答案

你可以这样做:

MYSQL> SELECT COUNT(foo) FROM database.table WHERE BINARY foo='bar';

二进制有魔力!!!

关于php - mysql:完全匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604082/

相关文章:

mysql - 计算表中所有行但只选择一个的最有效方法

mysql - 包含相关产品数量的类别列表

php - 通过 FullCalendar 搜索

php - pdo mysql 将一个查询插入两次

php - 在 Laravel 中,我的表列被连接覆盖,我该如何解决?

java - 如何在Docker中初始化数据库后启动flyway

c# - 在表中插入相关数据比预期慢

postgresql - 我需要计算一个单词出现的不同行数

php - 如何使关系 ManytoOne 为空

php:从日期范围中排除日期