mysql에서 일부 데이터를 가져 와서 일치 항목을 계산합니다 (WHERE foo='bar'
과 같음). 그러나 PHP에서 데이터를 반복 할 때 내 계산 수가 mysql의 계산보다 훨씬 적습니다.mysql : exact match?
MYSQL> SELECT COUNT(foo) FROM database.table WHERE foo='bar';
# PHP
while ($response = mysql_fetch_assoc($surveydata)){
if ($response==='bar') {
$bar++;
}
}
데이터는 하나 이상의 &
을 포함 할 수 있습니다, 그래서 난 단지 bar
하지 bar & foobar
일치합니다. 나는 bar
과 bar & foobar
을 계산하고 mysql은 bar
이 아니라 bar & foobar
이 아니라고 생각한다. PHP는 1210
를 반환하고, MySQL은 1783
를 반환, 그래서 수동으로 누가 옳다고 볼 수에 정확히 실용적 ...
편집
여기에 실제 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
코드가 맞습니까? - $ response는 배열이므로 $ response === 'bar'는 항상 false가되므로 $ bar는 NULL이거나 초기 값이 무엇이든간에. – johannes
정확한 코드를 게시하십시오. 게시 한 코드로 PHP가 계산 한 방법이 없으며 코드를 보지 않고 코드를 디버깅 할 수 없습니다. 또한, COUNT()는 mysql에서 작동하며 SQL은 정확합니다. – Ted
@Ted : 실제 코드를 게시했습니다. 그것은 꽤 관련되어 있습니다. 나는 잘 작동하는 다른 카운터 ('COUNT()'와 루프가 같다)에서 그것을 재활용했다. 모든 응답을 주셔서 감사합니다. – jacob