こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

配列に値が入らない

PHP初心者です。

<?php
$sql = sprintf('SELECT * FROM image WHERE img_url="%s"',
mysql_real_escape_string('img_url')
);
$record = mysql_query($sql)or die(mysql_error());

while($data = mysql_fetch_assoc($record)) {
$image = array($data['img_url']);
}
?>

これで $image にはデータベースの img_url のフィールドの値がすべて代入されるはずだったのですが
なぜか配列には何も値が入りません。
何が悪いのか、配列についていろいろ調べてはみたのですが、どうしてもわかりませんでした。
どうやったら値が入るようになるか、教えていただけないでしょうか?

よろしくお願いします。

投稿日時 - 2012-02-12 22:52:23

QNo.7301650

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

こんばんは。

DBの「img_url」は文字列なんですよね?

>$sql = sprintf('SELECT * FROM image WHERE img_url="%s"',

$sql = sprintf("SELECT * FROM image WHERE img_url='%s'",
コーテーションが反対・・・。

投稿日時 - 2012-02-13 02:41:11

ANo.4

あ、今 yambejp さんの回答見て 思いました。

image テーブルの中の 全レコードから img_url フィールドの中身を 配列に入れたい。って事であれば、yambejp さんの回答の通りです。

んー、俺 また無駄な回答をしてしまった。
しかも、三回も。消したい。マジで。

投稿日時 - 2012-02-13 02:16:35

ANo.3

ちょっと席 外した為、途中で送信してすみません。

んで、↓これも 本来は 別のフィールドを指定すべきもんじゃないんでしょうか?
$image = array($data['img_url']);

そちらが提示したソースを見る限り、img_urlフィールドに「img_url」ていう文字列が入っているレコードを 抽出した挙句に、なぜか where で抽出条件として指定したimg_urlフィールドから読み込むという意味不明なことになっています。

投稿日時 - 2012-02-13 02:06:29

ANo.2

ざっと 読んでみて思ったこと。

↓これの
$sql = sprintf('SELECT * FROM image WHERE img_url="%s"',mysql_real_escape_string('img_url'));

↓この部分。
WHERE img_url="%s"',mysql_real_escape_string('img_url')

これを 簡単に書くと ↓こう。
WHERE img_url='img_url'

こういう風に抽出条件を指定している以上、 ↓ これの

while($data = mysql_fetch_assoc($record)) {
$image = array($data['img_url']);
}

↓これの
$image = array($data['img_url']);

↓これの中身は
$data['img_url']

「img_url」しか有り得ない。

んで、多分 データベース上には 存在していなくて、mysql_query($sql) は 何も返していない。

なので、↓これ
mysql_real_escape_string('img_url')

実は ↓こう なんじゃない?とか 思ってます。
mysql_real_escape_string($img_url)

投稿日時 - 2012-02-13 01:57:13

ANo.1

SQL文を見る限りナニをしたいかちょっとわからないのですが
まずは

print "rows:".mysql_num_rows($resource)."<br>\n";
のようにしてデータがとれているか確認してみてください

<?php
$sql = 'SELECT img_url FROM image';
$resource = mysql_query($sql)or die(mysql_error());
print "rows:".mysql_num_rows($resource)."<br>\n";
while($data = mysql_fetch_array($resource,MYSQL_ASSOC)) {
$image[] = $data['img_url'];
}
?>

みたいなデータの取り方になると思うんですが、データの絞込みを
どうしたいのか元のSQLをみてもわかりません

投稿日時 - 2012-02-13 01:51:50

あなたにオススメの質問