0

このコードでは、検索したタグを持つすべての画像を出力しようとしています。同じタグ「こんにちは」で 2 つの画像を作成しました。

ただし、プログラムは画像の1つだけを出力しています。しかし、$rows の数値をエコーすると 2 になります。MYSQL でクエリを実行すると、2 行も返されました。すべての画像が表示されている理由がわかりません。

 $input = ($_GET['input']);
$query = "SELECT * FROM `photo`.`photo` WHERE `tags` LIKE '%$input%'";
$result = mysql_query($query);
$data = mysql_fetch_array($result) or die (mysql_error());
$rows = mysql_num_rows($result);
$image = $data['image'];
     header('Content-type: image/jpeg');
     echo $image;

これが私のコードのすべてではありませんが、必要だと思うのはこれだけです。こちらは別ページで紹介されているものです。

echo "<img src='photolarge.php?input=$input'>"

$rows を echo すると、数値 2 が出力されるので、クエリが機能していることがわかります。

4

3 に答える 3

1

結果配列を反復処理するには、ループを使用する必要があります。

$query = "SELECT * FROM `photo`.`photo` WHERE `tags` LIKE '%$input%'";
$result = mysql_query($query);
while($rows = mysql_fetch_array($result)) {
    echo $rows[image];
}

コメントで述べたように、関数は使用しないでくださいmysql_。コードは SQL インジェクションに対して脆弱であるため、パラメータをサニタイズする必要もあります。

于 2013-02-07T23:24:57.247 に答える
0

最初の行だけでなく、4 行目で返されたすべての行をフェッチする必要があります。

于 2013-02-07T23:25:10.293 に答える
0

これを試して

   $query = "SELECT * FROM `photo`.`photo` WHERE `tags` LIKE '%$input%'";
   $result = mysql_query($query);
   while($row = mysql_fetch_array($result)) {
   echo $row['image'];
   }

MYSQLIヒント:またはに変更してみてくださいPDO。MYSQL はメンテナンスされなくなりました

于 2013-02-07T23:27:02.173 に答える