2017-01-30 2 views
-1

私は約30列のテーブルのSQLクエリを持っています。あなたの意見でこれを行う最善の方法は何ですか?私はたくさんのグーグルで探せましたが、私が探しているものは実際には見つかりませんでした。PHPの変数としてmysqlの列の値を使用

$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

2番目のクエリの変数名を再利用していますか?そうすれば、それらは上書きされます。データを保持したい場合は、別の変数名を使用してください。例(2番目のクエリ): '$ 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

別のIDとそのページの変数を持つ別のクエリが必要なので、2番目のクエリの変数が最初のものを上書きするでしょうか? – vloryan

+0

@vloryan - 他のクエリの結果に同じ列名のいずれかがある場合は、それらは上書きされます。 –

+0

はい。それが間違っている場合は、抽出関数の2番目のパラメータで修正できます。 http://php.net/manual/en/function.extract.phpまた、接頭辞を使用することもできます。接頭辞を設定すると、この接頭辞はすべての抽出された変数に自動的に追加されます。 – esemve

関連する問題