2010-09-29 5 views
3

Эй, им новое для PHP (начал на прошлой неделе) ив получил 10 строк информации в виде SQLdb в Lazarus им делать то же самое для всех 10:Могу ли я сделать это проще?

$db_line1 = mysql_query("SELECT * FROM messages WHERE message_id='1'"); 
$line1 = mysql_fetch_array($db_line1); 
unset ($line1['0']); 
unset ($line1['1']); 
unset ($line1['2']); 

$db_line2 = mysql_query("SELECT * FROM messages WHERE message_id='2'"); 
$line2 = mysql_fetch_array($db_line2); 
unset ($line2['0']); 
unset ($line2['1']); 
unset ($line2['2']); 

т.д. и т.п. вплоть до $ line10, могу ли я использовать что-то вроде функции «foreach»?

+0

Что вы 'unset'-ting там ...? – deceze

+0

Хорошо, когда я использую mysql_fetch_array, он возвращает значение что-то дважды, один раз с именем collum и один раз с одним из чисел. – Diesal11

+1

Вот почему вы используете 'mysql_fetch_assoc'. :) Внимательно прочитайте руководство: http://php.net/manual/en/function.mysql-fetch-array.php – deceze

ответ

1

EDIT следующие автора комментария

Возьмите все строки сразу

$db_line = mysql_query("SELECT * FROM messages WHERE message_id >= '1'" . 
          " AND message_id <='10'"); 

    $rows = array(); 

    while ($line = mysql_fetch_assoc($db_line)) 
    { 
     $rows[$line['message_id']] = $line; 
    } 

Таким образом, вы имеете массив строк (то есть массив массивов).

Чтобы получить строку для message_id 3, просто сделать

$row = $rows[3]; 

и получить доступ к (например) name колонку,

$row['name'] 

или

$rows[3]['name'] 
+0

это не столбцы, это строки, мне нужны все столбцы из каждой строки, но каждая строка в своем собственном массиве, – Diesal11

+0

oh, а unset - потому, что я не указал «MYSQL_ASSOC», в "mysql_fetch_array" – Diesal11

-1
$db_lines = mysql_query("SELECT * FROM messages"); 
while ($line = mysql_fetch_array($db_lines)) 
{ 
    unset ($line['0']); 
    unset ($line['1']); 
    unset ($line['2']); 
} 
+0

Почему downvotes?Важным в этом примере был цикл while, то, что внутри, не актуально на данный момент, и я принял действия, упомянутые в вопросе .... – Tokk

+1

Tokk, вы постоянно переписываете $ line. Здесь тоже бесполезно снимать. – halfdan

+0

Я знаю и выгляжу, что это всего лишь пример, чтобы сделать что-либо с элементами цикла. Возможно, я должен добавить «// ПРИМЕР !!! НЕ ИСПОЛЬЗУЙТЕ КАК ЭТО!» для людей, не понимающих смысла этого ... – Tokk

3
$query = mysql_query("SELECT * FORM messages"); 
while($result = mysql_fetch_assoc($query)) 
{ 
    echo "<pre>"; 
    print_r($result); 
    echo "</pre>"; 
} 
unset($result); 
+0

Упоминание mysql_error() было бы неплохо. – halfdan

+0

Это сработало, но я могу получить их в своих собственных массивах? – Diesal11

+1

каждый '$ result' - это массив, в него извлекается строка данных из вашей таблицы' messages'. Вот почему я использовал 'print_r', чтобы показать вам. @halfdan; извините, правда, но я привык использовать класс базы данных и просто вызывать 'MySQL :: Query ($ qry);'. И 'unset', я думаю, является аккуратным habbit, он очищает память до конца pageload, что приводит к более быстрой странице. (Все, что я никогда не делаю этого ..;)) – Ben

2

Отвечая на комментарий («могу ли я получить их в своих собственных массивах»):

$query = mysql_query("SELECT * FORM messages") or die(mysql_error()); 
$messages = array(); 
while($result = mysql_fetch_assoc($query)) 
{ 
    $messages[] = $result; 
} 
unset($result); 

Затем вы можете перебирать сообщения $.

+0

Это сработало, спасибо! – Diesal11

+1

ПОЧЕМУ вы бы сделали это, КОГДА результат будет таким же ...? Это просто добавление всего массива $ result-array в новый массив, если вы, с какой целью, хотите сделать это, просто вызовите '$ messages = $ result;' ... – Ben

+0

P.s. упоминание 'mysql_error' было бы неплохо;) hehe – Ben

1

Вы можете использовать динамически созданные переменные в PHP:

for ($i = 0; $i < 3; $i++){ 
     unset(${'line'.$i}); 
    } 

EDIT: Как это работает (пример):

$var1 = "hel"; 
$var2 = "lo"; 
$hello = "xxx"; 

echo ${$var1.$var2}; // outputs "xxx" 

Использование $ {. 'Хуг' переменная $} даст вам переменную с именем 'xyz'. $ Variable. Обратите внимание, что «xyz». $ Variable »определяется первым.

+0

Кто-то написал что-то подобное раньше, как именно он работает? – Diesal11

+0

i отредактировал мое сообщение – Thariama

+0

ahh ok, thanks! – Diesal11

Смежные вопросы