[英]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正在計數bar
和bar & 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.