2016-10-21 4 views
0

データベースから全テーブルを取得するselect文があります。文ですべてを選択し、特定の行をエコーする

if ($select = $db -> prepare("SELECT service_id, service_name, service_cost FROM services")) 
{ 
    $select -> execute(); 
    $select -> bind_result($service_id, $service_name, $service_cost); 
    $select -> fetch(); 
    $select -> close(); 
} 

(私は、この例でquery代わりのprepareを使用することができます知っている。)

出力

service_id | service_name | service_cost 
1    Artwork   80.00 
2    Printing   60.00 
3    Binding   20.00 
4    Finishing  30.00 

だから今、私は私の処分でサービステーブルからのデータのすべてを持っていること私は特定の場所で特定のものをエコーすることができるようにしたい。たとえば、私のページのどこかに印刷しているIDが2のサービスと、ページのさらに下に印刷するコストをエコーし​​たいとしましょう。これらを得るためにちょうどWHERE id=?と2つの新しいステートメントを書く必要なく、これを行う方法はありますか?

のようなものecho $service_name(2) 2はIDですか?

これに類似したものはありますか?

私がしようとしていることを達成するためのベストプラクティスは何ですか?

答えて

1

解決策はこれです:

​​

しかし、おそらくあなたはそれをこのようにしたいと考えている(idが一意であると仮定する):

function print_query_variable($id, $variable_name) 
{ 
if ($select = $db -> prepare("SELECT service_id, service_name, service_cost FROM services WHERE service_id=$id")) 
{ 
    $select->execute(); 
    $select->bind_result($service_id, $service_name, $service_cost); 
    $select->fetch(); 
    $select->fetch(); 
    $select->close(); 
    return $$variable_name; 
} 

} 
+0

あなたはまだ準備されていない文章を使っていますが、依然としてクエリの一部として '$ id'を含んでいます。 – ShiraNai7

+0

私は一意のIDを使用していますので、下の例をそのまま使用しています私は自分自身で$ idを消毒します)。私の 'print_query_variable( '2'、 'service_name');'を私のページに置くと、var_dumpedが両方の引数を欠いていると言うとき、 "nullのメンバ関数prepare()を呼び出します。 –

+1

もちろん、前にしたように$ dbオブジェクトを初期化する必要があります。 –

0

あなたがしたいだけのように振る舞うためにあなたのデータを変換することができます

$services = array(); 
foreach ($result as $r) { 
    $services[$r['service_id']] = $r; 
} 

今、あなたはIDによって情報を得ることができます。

$id = 2; 
echo $services[$id]['service_name']; 
関連する問題