Извлечение MySQL полей строки в PHP переменные и массив - PullRequest
2 голосов
/ 03 сентября 2011

У меня есть таблица с целой кучей полей и записей в ней (40 + полей).

Я использую свой результат MySQL следующим образом:

<?php
 $field1 = $row['field1'];
 $field2 = $row['field2'];
 $field3 = $row['field3']; 
?>

Как видите,имя переменной совпадает с именем поля.

Как я могу сделать это для всех полей, не вводя их все?Было бы здорово, когда я добавлю больше полей!

Я знаю о функции eval, но я не уверен, как использовать ее в этом случае.

Кроме того, как можноЯ генерирую массив с результатами?Вот так:

<?php
  $arr = array(
           'field1'=>$row['field1']
               );
?>

Ответы [ 3 ]

4 голосов
/ 03 сентября 2011

Вы можете использовать extract () :

extract($row);

Однако , будьте внимательны, вы не загрязняете пространство имен с помощью этой функции.Скажем, у вас уже есть переменная с именем $car, и в вашей базе данных есть поле с именем car.Вы можете невольно перезаписывать существующие переменные!

Тогда может быть безопаснее использовать:

extract($row, EXTR_SKIP); // don't extract variables that already exist in the namespace

РЕДАКТИРОВАТЬ: Что касается редактирования, вы неВам не нужно создавать массив для результатов ... ваш массив $ row - это результат.Если вы создаете массив, как при редактировании, $arr['field1'] = $row['field1'], то почему бы вообще не обходить построение этого массива и просто использовать исходный $row?

4 голосов
/ 03 сентября 2011

Функция extract() делает именно это:

extract($row);

По умолчанию она переопределяет любую существующую переменную (например, если у вас уже есть переменная field1, она переопределяетЭто).Вы можете отключить это, передав EXTR_SKIP в качестве второго параметра:

extract($row, EXTR_SKIP);

Или вы можете поставить префикс перед всеми переменными:

extract($riw, EXTR_PREFIX_ALL, 'row');
2 голосов
/ 03 сентября 2011

Кроме того, как я могу сгенерировать массив с результатами?

$arr = $row;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...