我有一个简单的查询,我不能在我的页面上打印出来的生活:
$results = mysql_query("SELECT * FROM andyasks ORDER BY date");
$test = mysql_fetch_array($results, MYSQL_BOTH);
foreach ($test as $row){
print($row[questions]);
}
对于前两行,输出的内容(不可预测地,在我看来)只是每个表字段的第一个字母。所以75行表x 5列应该显示75个“问题”排队,但它显示“00WWFFAA00”,这是前两行每个单元格的第一个字母。发生了什么事?
答案 0 :(得分:5)
试试这个。
$results = mysql_query("SELECT * FROM andyasks ORDER BY date");
while($row = mysql_fetch_array($results))
{
print($row["questions"]);
}
原因是您只能使用
进行一次提取$test = mysql_fetch_array($results, MYSQL_BOTH);
这就是为什么你需要在while循环中使用它。它获取一行,while循环将在没有更多行时终止(因为当没有更多行时它返回false)。
答案 1 :(得分:4)
只是为了解释你的代码有什么问题......
您的代码仅将第一行提取到$test
变量中。此数组包含两列 - 按索引和按名称键入(这是MYSQL_BOTH
的作用)。如果在循环之前插入print_r($test);
,它将转储数组的内容,这样你就可以看到发生了什么。
你的循环所做的是遍历每一列并将其值作为字符串提取到$row
。当您对包含字符串的变量使用数组语法(即$row["questions"]
)时,PHP会在您选择的索引处提取一个字符。由于"question"
不是数字,因此它的计算结果为0,这就是为什么你得到每列的第一个字母。
ÓlafurWaage有正确的语法来解决你想要做的事情。