0

私は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++;
    }
}

データには1つ以上のが含まれている可能性がある&ため、一致させたいのは一致させ、一致させたくbarないのbar & foobarです。mysqlはカウントbarしていると思いますbar & foobarが、phpはカウントしているだけで、カウントbarしていませんbar & foobar。PHPが返さ1210れ、mysqlが返さ1783れるので、手動でカウントして誰が正しいかを確認するのが正確に実用的です…</ p>

私はグーグルで検索しましたが、「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
4

3 に答える 3

2

あなたはこれを行うことができます:

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

BINARYは魔法をかけます!!!

于 2012-10-22T15:51:46.463 に答える
1

foo正確にであるレコードをカウントする場合はbar、SQLクエリが正しいです。

PHPコードに問題があり、投稿したコードはまったく機能しないはずです(0レコードをカウントする必要があります)。

于 2011-09-29T22:36:05.457 に答える
0

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

$response = mysql_fetch_assoc($surveydata);
echo $response['rows'];
于 2011-09-29T22:30:59.570 に答える