- ベストアンサー
SQLのデータから連想配列を作成できない問題を解決したい
- 配列$food内の要素の数が増えてきたため、SQLを使用して$foodを作成したい。データベースからnameカラムのデータを取得し、連想配列$foodに格納する方法を教えてください。
- 現在、配列$food内の要素の数が増えてきており、効率的な処理をするためにデータベースから$foodを作成したいと思っています。具体的には、データベースのnameカラムのデータを取得して、配列$foodに格納する方法をお知り合いください。
- PHPで配列$foodを効率的に作成するために、データベースからnameカラムのデータを取得する方法がわかりません。mysql_fetch_arrayなどを使用してもうまくいかないので、正しいコードと方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
mysql_select_dbの行末に「;」を入れてください。 while行の前に$foods = array();を追加してください。 while(...) { }をwhile(...) {$foods[] = $food['name'];}としましょう。 上記で次のような感じになります。ただし、パラメータ関係は定数にしてあります。 <?php require_once('mysql_config.php'); $link = mysql_connect( HOSTNAME, UNAME, UPASS); mysql_select_db( DBNAME, $link); $name = 'tbl_foods'; $res = mysql_query( "SELECT * from {$name}", $link); $foods = array(); while( $food = mysql_fetch_assoc( $res ) ){ $foods[] = $food['name']; } print_r($foods); ?> 結果は次のようになります。 Array ( [0] => orange [1] => apple [2] => sugar [3] => spice [4] => cake )
その他の回答 (1)
- freetaka
- ベストアンサー率53% (106/197)
それぞれの変数には 必要な文字列が入っているということでしょうか? もしそうでなければまったく動きませんし エラーは何もでていないのでしょうか? 入っているのならば mysql_select_db( $dbname, $link) の最後に「;」がないくらいで大丈夫なように思えますが 本当に連想配列が作られていないのか 表示してみるといいと思います <?php $hostname = 'ホスト名'; $uname = 'ユーザ名'; $upass = 'パスワード'; $dbname = 'dbname'; $name = 'Table'; $link = mysql_connect( $hostname, $uname, $upass); mysql_select_db( $dbname, $link); $res = mysql_query( "SELECT * from {$name}", $link); while( $food = mysql_fetch_assoc( $res ) ){ #表示確認用 echo $food['name']."<br>"; } ?>
お礼
ありがとうございます。 while文の文がないのが原因なのかなどしばらく悩んでいたので、解決して助かりました。
お礼
なるほどです。 一度foodsを作って、そちらに格納すればよかったのですね。 ありがとうございます。