2014-09-13 4 views
0

쿼리가 데이터베이스에 여러 ID와 일치하는 레코드가 있는지 확인하고 각 행을 자체 배열에 넣는 시스템에서 작업하고 있습니다. 지금까지 나는 그 자신의 배열에서 반향을 일으키는 마지막 행만 얻었다.MySQL 데이터베이스의 여러 행을 다차원 배열 (PHP)에 넣으려면 어떻게해야합니까?

$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

for fyi .... 당신의 코드는 SQL injection을 위해 열려 있습니다 ... mysqli_ 또는 PDO 쿼리를 검색하십시오. – NoobEditor

+0

@NoobEditor $ senderid 변수는 코드의 앞부분에있는 mysql_real_escape_string을 사용하여 이스케이프 처리됩니다. – rn10950

답변

1

mysql_fetch_array 현재 커서의 행만 결과 집합 전체를 반환하지 않습니다. 귀하의 코드는 MySQL 커서를 움직이지 않습니다; 그렇게, 코드가되어야합니다 : 그것은 열 이름과 해시 대신 인덱스 배열 될 수있는 바와 같이

$resource = mysql_query($query, $database); 
while($row = mysql_fetch_array($resource)){ 
    print_r($row); 
    echo '<br />'; 
} 

또한, 게시 원하는 출력을 위해, 당신은 대신 mysql_fetch_assoc를 사용해야합니다

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 
} 
관련 문제