2017-01-30 2 views
-1

У меня есть SQL-запрос для таблицы с примерно 30 столбцами и хотелось бы работать с этими значениями столбцов в переменных, не определяя сначала всех и каждого? Каков наилучший способ сделать это по вашему мнению? Я много гугл, но на самом деле не нашел то, что искал. Вот запрос я использую:Использовать значения столбца mysql как переменную php

$pdo = new PDO('mysql:host=localhost;dbname=test', 'customername', 'password'); 

$sql = "SELECT * FROM customers WHERE id = 1"; 
$customer = $pdo->query($sql)->fetch(); 
echo $customer['first_name']." ".$customer['last_name']."<br />"; 
+1

Могу ли я спросить, почему? Разве не лучше держать их в массиве, который у вас уже есть, вместо того, чтобы загромождать пространство имен с большим количеством переменных? –

+0

У меня есть проблема, что, как только я начинаю другой запрос, эти значения из первых как-то ушли. – vloryan

+1

Повторно ли вы используете имена переменных для второго запроса? Тогда да, они будут перезаписаны. Используйте отдельные имена переменных, если вы хотите сохранить данные. Пример (второй запрос): '$ customer2 = $ pdo-> query ($ sql) -> fetch()'. Теперь у вас есть «$ customer» и «$ customer2». –

ответ

2

http://php.net/manual/en/function.extract.php

$pdo = new PDO('mysql:host=localhost;dbname=test', 'customername', 'password'); 

$sql = "SELECT * FROM customers WHERE id = 1"; 
$customer = $pdo->query($sql)->fetch(); 
extract($customer); 
echo $first_name." ".$last_name."<br />"; 

Но если вы используете это, ваш код будет едва читаемыми. Исходный $ customer ['fieldname'] - лучший способ.

+0

Мне нужен другой запрос с другим идентификатором и этими переменными на этой странице, поэтому переменные из второго запроса, вероятно, перепишут первые, не так ли? – vloryan

+0

@vloryan - Если результат из другого запроса имеет одно и то же имя столбца, тогда да, они будут перезаписаны. –

+0

есть. Если это не так, вы можете изменить его с помощью вторых параметров функции extract. http://php.net/manual/en/function.extract.php Или вы можете использовать префикс, если вы установите его, этот префикс автоматически добавит все извлеченные переменные. – esemve

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