Я извлекаю некоторые данные из 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
EDIT
вот фактический 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