2009-06-12 146 views
0

我有一个简单的查询,我不能为我GET的使用寿命,打印出我的网页上:什么会导致我的MySQL查询挂两个结果后?

$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

你可以显示andyasks的表格布局吗?它是否被索引? – mkb 2009-06-12 13:52:38

+0

就我所知,该代码应该做的是获取'andyasks'表中的所有行,然后在一个长字符串中打印出每行的'questions'字段的值。请注意,它应该是$ row ['questions'],但如果PHP不是可识别的常量,它会将问题转换为字符串。 – Blixt 2009-06-12 13:53:50

回答

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)。

4

只是为了解释什么是你的代码错误...

您的代码只读取第一行到$test变量。该数组包含两列 - 按索引和名称(这是MYSQL_BOTH的作用)。如果在循环之前插入print_r($test);它将转储数组的内容,以便您可以看到发生了什么。

循环的作用是遍历每列,并将其值作为字符串提取到$row中。当您在包含字符串的变量上使用数组语法(即$row["questions"])时,PHP将在您选择的索引处提取一个字符。由于"question"不是数字,因此它的计算结果为0,这就是为什么您会得到每列的第一个字母。

ÓlafurWaage对于您要做的事情有正确的语法。

相关问题