簡體   English   中英

MySQL的:完全匹配?

[英]mysql: 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';

BINARY做魔術!!!

如果要計算foo恰好是bar的記錄,則SQL查詢是正確的。

您的PHP代碼出問題了,您發布的代碼根本不起作用(應該記錄0條記錄)。

MYSQL> SELECT COUNT(foo)作為來自database.table的行WHERE foo ='bar';

$response = mysql_fetch_assoc($surveydata);
echo $response['rows'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM