2013-02-06 33 views
0

我試圖在我的頁面中完成圖像搜索。爲什麼我的LIKE搜索返回所有內容?

無論我搜索什麼,它總是返回數據庫中帶有標籤信息的所有圖像。

我說得那麼當有人進入文本搜索框,網頁會被重定向到這樣的:

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部分不起作用。它總是給我所有帶有標籤的圖片。

+2

你從'var_dump($ input)'得到了什麼? – user20232359723568423357842364

+0

你的輸入是什麼?在您的輸入中調用'abs'時,如果它不是一個數字,它看起來會變爲空。 – datasage

+0

我不是PHP專家,但對我來說,它看起來好像你沒有把適當的SQL查詢放在一起。用'$ input'使用參數化查詢,你應該沒問題。 (爲什麼'$ input'賦值中的'abs()') – Lucero

回答

2

我懷疑$輸入是空的。如果您的變量$輸入爲空或空字符串,它會創建一個WHERE子句:

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

這將匹配通配符「%」的一切。

+0

我希望'tags'是一個字符串。但它顯然會是一個積極的數值...? 'WHERE'tags' LIKE'%4.5'「' - 這看起來不合適 – ficuscr

+0

是的,它是abs,甚至不知道爲什麼我這麼說,一定不是一直在想。謝謝! –

1

我看到的一個問題是第一行的abs。如果你做一個文本字符串的abs,你會得到一個零。

+0

是的,它是abs,甚至不知道我爲什麼要這樣做,一定不會一直在想。謝謝! –

+0

你可以給我正確的答案功勞嗎? –

0

對於更安全的代碼,您使用$input = mysql_real_escape_string($_GET['input'])代碼。 你的情況沒有必要使用abs()函數。

相關問題