
データ(テーブル名:os)
id,name_a,name_b
1,マイクロ,ソフト
2,マッキン,トッシュ
3,リ,ナックス
というテーブルがあり
<?php
$sql = mysql_query("SELECT * FROM os WHERE name_b LIKE 'ソフト'");
while($ck = mysql_fetch_assoc($sql)){
}
?>
とした場合
whileの中では、echo $ck[name_a]; とすればこの場合「マイクロ」と表示されますが
whileの外でも表示させたい場合はどうすれば効率がいいでしょうか?
一つは、whileの中で$a = $ck[name_a]; $b = $ck[name_b]・・・と入力すればいいのですが
フィールド数が結構な数ある為に効率が悪いです。
また、
list($ck2[],$ck2[],…) = $assoc;
というようにlistを使ってもつらつらと書かなければなりません。
もしくは、mysql_fetch_assocをrowに書き換えて
for($i=0;$i<count($ck);$i++){
$ck2[$i] = $ck[$i];
}
としてしまうか、
現在htmlで作業しているのですが
<?php
while(){
?>
<?php echo $ck[name_a]; ?>
<?php
}
?>
がいいかな。と思ったりするのですが
なにぶん素人の考えなので、実際に仕事等で利用されている方は
どのようにして使用しておられるのか教えて頂けると幸いです。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
こうやって配列にため込んで再利用してみては?
<?PHP
$sql="SELECT * FROM os WHERE name_b LIKE 'ソフト'";
$res=mysql_query($sql);
while($row = mysql_fetch_array($res,MYSQL_ASSOC)){
$a[]=$row;
}
print_r($a);
?>
SQLの戻り値データが一つしかなく、フィールド名(もしくは任意の別名)の
配列におさめればいいのであれば
<?PHP
$sql="SELECT * FROM os WHERE name_b LIKE 'ソフト'";
$res=mysql_query($sql);
while($row = mysql_fetch_array($res,MYSQL_ASSOC)){
extract($row);
}
print $name_a;
?>
でもよいですが、extractは致命的なバグにつながる可能性も秘めているので
お勧めはできません。
またSELECT * は避けた方がいいです。可能な限りフィールド名を列記してください。
SELECT id,name_a,name_b FROM ・・・
回答、有難う御座います。
お陰様で自分が求めていた処理を施せるようになりました。
配列を二次元化するなんて考えもしませんでした。
勉強になります。
extractはとても便利な関数なんですね。
GETやPOST等の信頼出来ないデータは使用しない方がいい旨が
少し調べた所記載されていたので
多次元配列とextractを使いわけながら使用していきたいと思います。
後、「*」も了解しました。
フィールド長がかなりあったので手抜きしていたのですが、
これからは列記していくことにします。
解りやすい回答、有難う御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
下記の問合せを行うクエリを、P...
-
mysqlがインストールされている...
-
テーブル名が可変の場合のクエ...
-
#1062 - '0' は索引 'PRIMARY' ...
-
テーブル作成時のカラムについて
-
SQL文についての質問です。
-
「ストレージエンジン」とは何か
-
データベースの接続に失敗して...
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームから送信した値とMySQL...
-
PHPにてSQLから取得したデータ...
-
php+MySqlでの検索ページ
-
PearDBで項目を1回だけ適切に表...
-
プレースホルダを使った複数カ...
-
配列の要素でmysqlに問い合わせ
-
mysqlがインストールされている...
-
MySQLカラム名は日本語と英数字...
-
ODP.NETのバージョン確認
-
副問合せにLIKE文を使う方法は...
-
SQLのVARCHARとVARCHAR2の違い
-
エクセルで連勤チェックをした...
-
ERROR 1045 (28000) (using pas...
-
旧filemakerで和暦(令和など)...
-
列数が多いと結果が行単位に改...
-
Usage: \\.<filename> | sourc...
-
VBAで変数内に保持された二次配...
-
INT型は金額の型に使用するべき...
-
like句を使って日本語を検索す...
-
mysqlへのインポート処理がうま...
おすすめ情報