2015-08-31 4 views
1

Я начал изучать PHP и, но в пределах личного проекта я не могу пройти мимо этой проблемы:PHP - выбрать несколько строк из MySQL

Я получил таблицу в MySQL с несколькими строками:

$sql = "SELECT * FROM posts"; 
$query = mysqli_query($db_conx, $sql); 

где таблица выглядит следующим образом:

id  header  content 
------------------------- 
10  test3  <p>test</p> 
9  test2  <p>test</p> 
8  test  <p>test</p> 

, но когда я запускаю этот код:

if($query) { 
    $row = mysqli_fetch_row($query); 
    for($i; $i < count($row); $i++){ 
     echo $row[$i] . " "; 
    } 
} 

он выбирает только первую строку, а остальные игнорируются.

Идеальный выход будет массив как:

$dataArray[0][0] = "10" 
$dataArray[0][1] = "test3" 
$dataArray[0][2] = "<p>test</p>" 

$dataArray[1][0] = "9" 
$dataArray[1][1] = "test2" 
$dataArray[1][2] = "<p>test</p>" 

$dataArray[2][0] = "8" 
$dataArray[2][1] = "test" 
$dataArray[2][2] = "<p>test</p>" 

etc; 

Можете ли вы помочь мне с этим, и, пожалуйста, объясните мне немного?

PS: Извините за мой английский, это не мой родной язык.

Решение:

Я использовал решение MaggsWeb в:

if($query) { 
    while($row = mysqli_fetch_assoc($query)){ 
     echo $row['header']; 
     echo $row['content']; 
    } 
} 

, но я изменил его ниже, чтобы сделать его полный и один массив:

$index = 0; 
$data = array(); 

if($query) { 
    while($row = mysqli_fetch_assoc($query)){ 
     $data[$index][0] = $row['id']; 
     $data[$index][1] = $row['header']; 
     $data[$index][2] = $row['content']; 
     $index++; 
    } 
} 
+1

'fetch_row()' делает именно то, что предлагает его название: он извлекает один ** ROW **. Вы зацикливаете отдельные поля в этой строке. –

ответ

1

Используйте while петля с вашей функцией myslqi_fetch_row().

if($query) { 
    while($row = mysqli_fetch_row($query)){ 

     echo $row[0] . " "; 
     echo $row[1] . " "; 

    } 
} 

Вы можете найти его проще использовать mysqli_fetch_assoc() вместо этого, так что вы можете получить доступ к данным, используя имя столбца ..

if($query) { 
    while($row = mysqli_fetch_assoc($query)){ 

     echo $row['header']; 
     echo $row['content']; 

    } 
} 
0

вам нужно изменить ваш запрос таким образом,

$sql = "SELECT * FROM posts"; 
$result = mysqli_query($db_conx, $sql); 

if ($result->num_rows > 0) { 
while($row = $result->fetch_assoc()) { 
    echo $row['id'].' '. $row['header'].' '. $row['content']. "<br>"; 
} 
} 
Смежные вопросы