私のSQLステートメントは、上下の2つの連想キーの配列を返します。
query = 'SELECT `up`,`down` FROM `records` WHERE `id`=id'
次のような両方の変数を 1 行で設定できる方法はありますか。
$up, $down = 'SELECT `up`,`down` FROM `records` WHERE `id`=id'
up と down がそれぞれの値を取るように?
からの戻り値mysqli::query()
は、すぐに連想配列ではなく、「結果セット」です。クエリが失敗した場合でも、それを取得することはできませんが、FALSE
. だからあなたができる間
list($up, $down) = $db->query ("SELECT up, down FROM records WHERE id='id';")->fetch_all();
これでは、クエリが実際に機能したかどうかを確認できないため、クエリを分割することをお勧めします。
SQL 呼び出しを行った後、次のような連想配列を取得した場合:
array(
'up' => 'foo',
'down' => 'bar'
);
次に、 を使用extract()
して変数$up
およびを取得できます$down
。
だからあなたはこれを行うことができます:
// no need to initialize $up and $down
extract(exec_query()); // asusming exec_query() returns the assoc array defined above
echo $up; // will print 'foo'
echo PHP_EOL;
echo $down; // will print 'bar'
PS - これは可能ですが、読みやすさの観点からは非常に悪いので、強くお勧めしません。
list()
1 つの関数呼び出しから複数の値を割り当てることができますが、この場合、クエリを実行してデータベース サーバーからデータをフェッチする必要もあります。
例えば:
list($up, $down) = mysqli_fetch_array($queryResult, MYSQLI_ASSOC);