2014-11-17 3 views
-2
$sql = "SELECT title, article, filename, caption FROM articles 
INNER JOIN images WHERE articles.image_id = images.image_id"; 
$result = $conn->query($sql); 
$row = $result->fetch_assoc(); 

var_dump($row); 

Это только захватывает первую строку в db, когда мне нужно, чтобы она захватывала все строки. Как я могу это достичь?Схват более чем одной строки от DB

+1

Кстати, fetch_all() возвращает ошибку. –

+0

Объясняется в документе PHP http://php.net/manual/en/mysqli-result.fetch-assoc.php – nicearma

ответ

2

fetch_assoc() возвращает следующую строку результирующего набора с каждым вызовом, так что вам нужно вызвать его в петлю, как это:

while($row = $result->fetch_assoc()) { 
    var_dump($row); 
} 

Цикл заканчивается, когда $row = null (т.е. нет больше строк, в результате задавать).

+0

Почему же это не тянет первую строку? Есть 3 строки. Он тянет два, но не первый, кажется ... http://screencast.com/t/MEhB5mfWcWN –

+0

Он уже вытащил первую строку в строке 8 кода на вашем изображении, чтобы вызов в цикле на линии 28 вытащите последующие строки. –

+0

Хорошо, прошу прощения. Как мне заставить его просто подготовить инструкцию, а затем получить все строки в цикле while ниже? –

0

Пожалуйста, взгляните на Quick start guide, а точнее на главу Executing statements. С этой страницы:

$mysqli->real_query("SELECT id FROM test ORDER BY id ASC"); 
$res = $mysqli->use_result(); 

echo "Result set order...\n"; 
while ($row = $res->fetch_assoc()) { 
    echo " id = " . $row['id'] . "\n"; 
} 
Смежные вопросы