Cómo get resultados múltiples de una consulta SQL

Tengo esta function:

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); } 

que devuelve todo el ID de mis usuarios en un sistema de postría privado. Entonces quiero get todos los posts donde el user_id es igual al usuario conectado y from_id es igual a todos los from_id que obtuve de la function anterior:

  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 devuelve solo 1 resultado:

 Array ( [id] => 3505 [from_id] => 111 [to_id] => 109 [message] => how are you? [sent] => 1343109753 [recd] => 1 [system_message] => no ) 

Pero debería haber 4 posts.

mysql_fetch_assoc() llamar a mysql_fetch_assoc() para cada fila que se devuelve. Si solo llama a mysql_fetch_assoc() una vez, solo devolverá la primera fila.

Pruebe algo como esto:

 $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); } 

'mysql_fetch_assoc' devuelve una matriz asociativa que corresponde a la fila recuperada y mueve el puntero interno de datos hacia adelante.

Necesitas iterar una matriz como:

  while ($row = mysql_fetch_assoc($q)) { echo $row["message"]; 

}