dポイントプレゼントキャンペーン実施中!

あるPHPがあります。
このPHPは配列$food = array('orange','apple','sugar','spice','cake');を基にさまざまな処理を行っているのですが、
配列内部の要素の数が大きくなってきたので、sqlを使用して$foodを作成しようと思います。
データベース名dbname、テーブル名Tableとして、nameカラムのデータから$foodを作成…つまり、
----------------------
Table 
------+
name |
------+
orange
apple
sugar
spice
cake
----------------------


$food = array('orange','apple','sugar','spice','cake');

などとしたいのです。
mysql_fetch_arrayなどを使用すればできると思うのですが、自分ではどうにもうまくいきません。

↓はgoogleでの検索条件を基に、私が書いたコードです
<?php
$link = mysql_connect( $hostname, $uname, $upass);
mysql_select_db( $dbname, $link)

$res = mysql_query( "SELECT * from {$name}", $link);
while( $food = mysql_fetch_assoc( $res ) ){ }
?>
どこのコードがおかしいのか教えてください。
また、できれば上のデータベースから$foodを作成するPHPを教えてください。

どなたかご教示のほど、どうかよろしくお願いします。

A 回答 (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
)
    • good
    • 0
この回答へのお礼

なるほどです。
一度foodsを作って、そちらに格納すればよかったのですね。
ありがとうございます。

お礼日時:2011/08/09 15:09

それぞれの変数には


必要な文字列が入っているということでしょうか?
もしそうでなければまったく動きませんし
エラーは何もでていないのでしょうか?

入っているのならば
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>";
}
?>
    • good
    • 0
この回答へのお礼

ありがとうございます。
while文の文がないのが原因なのかなどしばらく悩んでいたので、解決して助かりました。

お礼日時:2011/08/09 15:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!