データ(テーブル名: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で質問しましょう!
似たような質問が見つかりました
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PHP PHP MySql ページング 2 2022/09/20 06:38
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- 物理学 フーリエ変換の振幅について 1 2022/09/04 08:56
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- MySQL php テーブルを作れない 2 2022/11/17 18:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLからのデータをページに1...
-
フォームから送信した値とMySQL...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
like句を使って日本語を検索す...
-
VBAで変数内に保持された二次配...
-
RPMのmysqlとmysql-serverの違い
-
MySQLカラム名は日本語と英数字...
-
oracle、DB2、SqlServerのフィ...
-
ERROR 1045 (28000) (using pas...
-
xamppの設定の問題でしょうか。...
-
ヌル値は記憶容量を必要としな...
-
SQL開発環境ソフトウェアである...
-
mysqlコマンドでSQL文が実行で...
-
phpmyadminから別ホストへの接...
-
INT型は金額の型に使用するべき...
-
Float型の時の計算結果がおかしい
-
パスワード入力を省略したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームから送信した値とMySQL...
-
プレースホルダを使った複数カ...
-
mysql+php リストボックスにつ...
-
MySQLでデータ表示
-
PHPにてSQLから取得したデータ...
-
mysql sqlエラー
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
ODP.NETのバージョン確認
-
旧filemakerで和暦(令和など)...
-
ERROR 1045 (28000) (using pas...
-
副問合せにLIKE文を使う方法は...
-
INT型は金額の型に使用するべき...
-
like句を使って日本語を検索す...
-
postgreSQLのデータ型
-
RPMのmysqlとmysql-serverの違い
-
プライマリーキーの昇順でソー...
-
VBAで変数内に保持された二次配...
-
Float型の時の計算結果がおかしい
-
MySQLカラム名は日本語と英数字...
おすすめ情報