アプリ版:「スタンプのみでお礼する」機能のリリースについて

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 のフィールドの値がすべて代入されるはずだったのですが
なぜか配列には何も値が入りません。
何が悪いのか、配列についていろいろ調べてはみたのですが、どうしてもわかりませんでした。
どうやったら値が入るようになるか、教えていただけないでしょうか?

よろしくお願いします。

A 回答 (5件)

こんばんは。



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

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

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

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



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

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

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



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

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

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



↓これの
$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)
    • good
    • 0

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をみてもわかりません
    • good
    • 0

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