这有效:
$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;
}
}
}
这不是:
$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;
}
}
}
为什么呢?我想我不明白变量是如何工作的。
答案 0 :(得分:5)
问题是因为查询返回一行,所以没有什么可以提取。
mysql_fetch_*
函数获取当前行,然后将行指针前进到下一行。如果当前行不存在,则返回false。因此,在第二次调用mysql_fetch_assoc
时,指针位于第二行,但该行不存在,因此不执行循环。您有两种选择:
好:删除while
循环,然后将foreach
改为使用$boxRow
代替:
foreach ($boxRow as $columnName => $value) {
//...
}
好的:使用mysql_data_seek
重绕MySQL的行指针:
$boxRow = mysql_fetch_array($customerBox);
mysql_data_seek($customerBox, 0);
while(...){
答案 1 :(得分:1)
这可能与mysql_fetch_array()有关,而不是变量。试着说:
mysql_data_seek ( $customerBox , 0 );
在while循环开始之前。我很想看到结果。
答案 2 :(得分:0)
$ customerBox = mysql_query(“我的SQL语句在这里”);
$ boxRow = mysql_fetch_array($ customerBox);
while($ item = mysql_fetch_field($ customerBox)){ foreach($ item as $ columnName => $ value){ if(empty($ value)){ print $ columnName; } } }