Извлечение полей MySQL из строки в переменные и массив PHP

У меня есть таблица с целым рядом полей и записей в ней (40 + полей).

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

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

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

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

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

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

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

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

     extract($row); 

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

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

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

    EDIT: в отношении вашего редактирования вам не нужно создавать массив для результатов … ваш массив строк $ result является результатом. Если вы построите массив, как в вашем edit, $arr['field1'] = $row['field1'] , то почему бы вам вообще не обойти конструкцию этого массива и просто использовать исходную $row ?

    Функция extract() выполняет именно это:

     extract($row); 

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

     extract($row, EXTR_SKIP); 

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

     extract($riw, EXTR_PREFIX_ALL, 'row'); 

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

     $arr = $row;