テーブル「item」に10個のフィールドがあるとします。
id,item_name,price,......
現在は下記のようにフィールドの値を1つずつ取得して変数へ入れています。
変数名=フィールド名といった感じで一括で取得して変数に入れる方法はありませんか?
$query = mysql_query("SELECT item_name FROM item WHERE id='$id", $link);
if($row = mysql_fetch_array($query)){
$item_name =($row['item_name']);
}
先にカラムを取得して置いて、可変変数を使用して代入しています。
$res = mysql_query("DESC item", $link); while ($row = mysql_fetch_row($res)) { $clm_arr[] = $row['0']; } $cnt = count($clm_arr); // $idはこれより前に指定してあるものとします。 $query = mysql_query("SELECT * FROM item WHERE id='".$id."'", $link); while ($row = mysql_fetch_array($query, MYSQL_ASSOC)){ for($n = 0; $n < $cnt; $n++){ $$clm_arr[$n] = $row["$clm_arr[$n]"]; // 表示確認 echo "変数 $$clm_arr[$n] の値は ${$clm_arr[$n]}です。<br>\r\n"; } }
・カラムの取得
http://yantona.jugem.jp/?eid=301
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html#doc1_ss:info...
・可変変数
先にカラムを取得して置いて、可変変数を使用して代入しています。
$res = mysql_query("DESC item", $link); while ($row = mysql_fetch_row($res)) { $clm_arr[] = $row['0']; } $cnt = count($clm_arr); // $idはこれより前に指定してあるものとします。 $query = mysql_query("SELECT * FROM item WHERE id='".$id."'", $link); while ($row = mysql_fetch_array($query, MYSQL_ASSOC)){ for($n = 0; $n < $cnt; $n++){ $$clm_arr[$n] = $row["$clm_arr[$n]"]; // 表示確認 echo "変数 $$clm_arr[$n] の値は ${$clm_arr[$n]}です。<br>\r\n"; } }
・カラムの取得
http://yantona.jugem.jp/?eid=301
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html#doc1_ss:info...
・可変変数
お世話になります。
ズバリのご回答ありがとうございました。
今まで長々と記述していたのが何だったろうと感じる便利さですね。
手抜き対応
mysql_queryの結果が意図しない順序や内容であっても動いてしまうためミスに気づけない
トラブル発生の原因になり、トラブル発生箇所の発見も困難にする手抜きな対応
$query = mysql_query("SELECT item_name, price, ...... FROM item WHERE id='$id", $link); if($row = mysql_fetch_array($query)){ list( $item_name, $price, ...... ) = array_values( $row ); }
堅実な対応
mysql_queryの結果が意図しない内容の場合はエラーになって止まる可能性が高くミスに気づきやすい
コード作成は少し面倒でもトラブルを起こすことは少ない
コードの意図することも理解しやすくなりメンテナンスも容易
$query = mysql_query("SELECT item_name, price, ...... FROM item WHERE id='$id", $link); if($row = mysql_fetch_array($query)){ list( $item_name, $price, ...... ) = array( $row['item_name'], $row['price'], ...... ); }
その他
1レコード取得 if (list( $item_name, $price, ...... ) = mysql_fetch_array($query)) { 複数レコード取得 while (list( $item_name, $price, ...... ) = mysql_fetch_array($query)) {
参考URL
お世話になります。
ズバリのご回答ありがとうございました。
今まで長々と記述していたのが何だったろうと感じる便利さですね。