0

画像でいっぱいのページで画像検索を行おうとしています。

私が検索するものは何でも、それは常にデータベース内のタグ情報を持つすべての画像を返します。

誰かが検索ボックスにテキストを入力すると、ページが次のようにリダイレクトされるようにしました。

ob_start();

$input = abs($_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'];

if ($rows==0) {
    echo 'no results found';
}  else {
    $jpgimage = imagecreatefromstring($image);

    $image_width = imagesx($jpgimage);
    $image_height = imagesy($jpgimage);

    $new_size = ($image_width + $image_height)/($image_width*($image_height/45));
    $new_width = $image_width * $new_size;
    $new_height = $image_height * $new_size;

    $new_image = imagecreatetruecolor($new_width, $new_height);

    imagecopyresized($new_image, $jpgimage, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
    $imagearray = imagejpeg($new_image, null);
    header('Content-type: image/jpeg');

    echo $imagearray;
}

写真はBLOBとして保存されるので、ここではjpegに変換してサイズを変更します。

これのほとんどは画像のサイズを変更するだけですが、mysqlクエリ行のLIKE部分が機能しない理由がわかりません。タグが付いている画像を含むすべての画像が常に表示されます。

4

3 に答える 3

2

$inputが空だと思います。変数$inputがnullまたは空の文字列の場合、where句が作成されます。

 SELECT * FROM `photo`.`photo` WHERE `tags` LIKE '%'

これは、ワイルドカード'%'をすべてに一致させます。

于 2013-02-06T22:03:00.743 に答える
1

私が見る問題の1つは、最初の行の腹筋です。テキスト文字列のabsを実行すると、ゼロになります。

于 2013-02-06T22:05:36.877 に答える
0

$input = mysql_real_escape_string($_GET['input'])より安全なコードのためにコードを使用します。abs()あなたの場合、この関数を使用する必要はありません。

于 2013-02-06T22:24:57.470 に答える