这有效:
$customerBox = mysql_query("MY SQL STATEMENT HERE");
$boxRow = mysql_fetch_array($customerBox);
$customerBox = mysql_query("MY SQL STATEMENT AGAIN");
while($item = mysql_fetch_assoc($customerBox)) {
foreach ($item as $columnName => $value) {
if (empty($value)) {
print $columnName;
}
}
}Run Code Online (Sandbox Code Playgroud)
这不是:
$customerBox = mysql_query("MY SQL STATEMENT HERE");
$boxRow = mysql_fetch_array($customerBox);
while($item = mysql_fetch_assoc($customerBox)) {
foreach ($item as $columnName => $value) {
if (empty($value)) {
print $columnName;
}
}
}Run Code Online (Sandbox Code Playgroud)
为什么?我想我不明白变量是如何工作的.
问题是因为查询返回一行,所以没有什么可以提取的.
该mysql_fetch_*功能获取当前行,然后前进行指针到下一个.如果当前行不存在,则返回false.所以在第二次调用时mysql_fetch_assoc,指针位于第二行,但该行不存在,因此不执行循环.您有两种选择:
好:删除while循环,然后foreach改为使用$boxRow:
foreach ($boxRow as $columnName => $value) {
//...
}
Run Code Online (Sandbox Code Playgroud)
好的:使用mysql_data_seek以下方法重绕MySQL的行指针:
$boxRow = mysql_fetch_array($customerBox);
mysql_data_seek($customerBox, 0);
while(...){
Run Code Online (Sandbox Code Playgroud)