我正在研究一个系统,在该系统中,查询检查数据库中是否有匹配多个ID的记录,并将每一行放入其自己的数组中。到目前为止,我只有最后一行在它自己的数组中回显。这是查询代码:
$query = "SELECT * FROM messages WHERE senderid IN ($senderids) ORDER BY messageid DESC";
$resource = mysql_query($query, $database);
$result = mysql_fetch_array($resource);
foreach($result as $result1)
{
print_r($result1);
echo '<br>';
}
这就是浏览器中的回声:
2
2
1
1
TEST MSG 2
TEST MSG 2
2014_09_13_01:29:59
2014_09_13_01:29:59
这应该回应:
Array ([messageid] => 1 [senderid] => 1 [message] => test message [date] => 2014_09_13_01:01:09)
Array ([messageid] => 2 [senderid] => 1 [message] => TEST MSG 2 [date] => 2014_09_13_01:29:59)
我将如何解决此问题?
答案 0 :(得分:1)
mysql_fetch_array
不返回整个结果集,只返回当前光标处的行。你的代码没有移动mysql游标;要做到这一点,你的代码应该是:
$resource = mysql_query($query, $database);
while($row = mysql_fetch_array($resource)){
print_r($row);
echo '<br />';
}
此外,对于您发布的所需输出,您应该使用mysql_fetch_assoc
,因为它将是具有列名而不是索引数组的哈希
答案 1 :(得分:0)
$query = "SELECT * FROM messages WHERE senderid IN ($senderids) ORDER BY messageid DESC";
$resource = mysql_query($query, $database);
while($result = mysql_fetch_array($resource))
{
print_r($result); // OR $array[] = $result; and print $array outside the while loop
}