我有这个函数:
function findAllmessageSender(){
$all_from = mysql_query("SELECT DISTINCT `from_id` FROM chat");
$names = array();
while ($row = mysql_fetch_array($all_from)) {
$names[] = $row[0];
}
return($names);
}它返回我的用户在私人消息传递系统中的所有ID。然后,我想要获取所有的消息,其中user_id等于登录的用户,from_id等于我从前一个函数获得的所有from_id:
function fetchAllMessages($user_id){
$from_id = array();
$from_id = findAllmessageSender();
$data = '\'' . implode('\', \'', $from_id) . '\'';
//if I echo out $ data I get these numbers '113', '141', '109', '111' and that's what I want
$q=array();
$q = mysql_query("SELECT * FROM chat WHERE `to_id` = '$user_id' AND `from_id` IN($data)") or die(mysql_error());
$try = mysql_fetch_assoc($q);
print_r($try);
}print_r仅返回1个结果:
Array (
[id] => 3505
[from_id] => 111
[to_id] => 109
[message] => how are you?
[sent] => 1343109753
[recd] => 1
[system_message] => no
)但是应该有4条消息。
发布于 2012-09-27 13:32:44
您必须为返回的每一行调用mysql_fetch_assoc()。如果你只调用mysql_fetch_assoc()一次,那么它只会返回第一行。
尝试如下所示:
$result = mysql_query("SELECT * FROM chat WHERE `to_id` = '$user_id' AND `from_id` IN($data)") or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}发布于 2012-09-27 13:37:24
“mysql_fetch_assoc”返回与读取的行相对应的关联数组,并将内部数据指针向前移动。
你需要像这样迭代数组:
while ($row = mysql_fetch_assoc($q)) {
echo $row["message"]; }
https://stackoverflow.com/questions/12614637
复制相似问题