2015-08-13 3 views
-2

Здравствуйте, пожалуйста, помогите мне, этот код этот код показывает только, что последняя строка цикла не заполнена.Как эхо полный список строк в php mysql с использованием циклов while, но за пределами цикла

$sql = mysql_query("SELECT hash FROM users"); 
while($row=mysql_fetch_assoc($sql)) { 
    $url = $row["hash"]."<br />"; 

} 

5b50373f0dbd8ab7fe888060257967f2e0adcbdb

но полный список:

a065e7094234b1c836f9829ca9185a36132ff76f 5b50373f0dbd8ab7fe888060257967f2e0adcbdb

мольбы помочь мне

+0

Сделать '$ url' массив, или конкатенировать его с помощью новой строки ... – chris85

+0

use foreach {} loop – rackemup420

+1

Или '$ url. = $ row ["hash"]. "
"; ' – JungleZombie

ответ

0

Это хороший случай использования для foreach:

<?php 
$sql = mysql_query("SELECT hash FROM users"); 
$rows = mysql_fetch_assoc($sql); 
foreach ($rows as $row) { 
    $url = $row["hash"]."<br />"; 
} 
?> 

Plus, вы перезапись $url переменных каждой итерации. Либо нажать на каждое значение массива или конкатенацию строки:

<?php 
// ... 
$urls = ''; 
$url_list = array(); 
foreach ($rows as $row) { 
    $urls .= $row['hash'].'<br>'; // concatenation 
    $url_list[] = $row['hash']; // add each URL to an array 
} 
?> 

Затем вы можете либо выход конечной строки, или перебрать массив, если вы хотите, чтобы вспомнить значение.

+0

Почему? Не работает ли 'while' в этом случае? Вы все равно перезаписываете '$ url' каждый раз. –

+0

Ох. К сожалению. Ваша проблема в том, что вы каждый раз переписываете переменную '$ url'. Вы должны либо использовать конкатенацию ('$ url. = $ Row [" hash "];'), либо добавить их в массив ('$ url_list [] = $ row [" hash "];'). – Jeff

+0

Вы все еще не сказали, почему «foreach» является хорошим вариантом использования здесь. –

2

Вы можете сделать это одним из трех способов. В настоящее время вы выполняете сброс $url на каждой итерации.

$sql = mysql_query("SELECT hash FROM users"); 
$url = ''; 
while($row=mysql_fetch_assoc($sql)) { 
    $url .= $row["hash"] . "<br />"; 

} 

или

$sql = mysql_query("SELECT hash FROM users"); 
$url = ''; 
while($row=mysql_fetch_assoc($sql)) { 
    echo $row["hash"] . "<br />"; 

} 

или

$sql = mysql_query("SELECT hash FROM users"); 
while($row=mysql_fetch_assoc($sql)) { 
    $url[] = $row["hash"] . "<br />"; 
} 

При таком подходе вам нужно перебирать массив позже, foreach ..

+1

Я пробовал свой мозг (уже около часа) на чем-то, над чем я работаю, чтобы вырвать больше одной строки «снаружи» цикла, где я не мог «эхо» внутри цикла, так как у меня около десятка различных разделов на загрузочном сайте, для которого требуется эхо только переменная, а не целая куча «входов и выходов» петель PHP. Ваше первое предложение было тем, что работало для меня Крисом; другие - нет. Я буду хранить этот файл «в файле». * Cheers * –

+1

@ Fred-ii- Рад, что кто-то смог его использовать. – chris85

+0

У него есть Крис; для меня в любом случае и «спасибо» за то, что я представил ответ, который может очень помочь и другим. Я уверен, что OP получил свое решение, но просто убежал. Не похоже, что им не сказали, что делать с ответами, которые не даны. * Приветствия * –