2011-04-27 93 views
0

我正在使用LIKE來做我的搜索,我在phpMyAdmin中嘗試它並返回結果,但是當我在PHP中使用它時,它返回空結果。PHP查詢錯誤

$search = "ip"; 
$start = 0; 
$query = "SELECT * FROM product WHERE product_name LIKE '%$search%' LIMIT $start,30"; 
$result = mysql_query($query); 
if(empty($result)) 
    $nrows = 0; 
else 
    $nrows = mysql_num_rows($result); 

它會返回結果,當我使用phpMyAdmin運行此查詢,但當我在PHP中使用它,它將返回空。

更新:

對不起球員,

我剛剛發現這個問題是我沒有連接數據庫爲好。無論如何,感謝您的幫助。

+0

如果您檢查$查詢的價值,是等同於你在phpMyAdmin使用什麼? – 2011-04-27 09:19:38

+0

您是否在執行之前嘗試打印'$ query'?你確定它是完全按照你的需要寫的嗎? – Marco 2011-04-27 09:19:47

+0

'$ search'包含什麼? '$ start'包含什麼?另外請注意,您需要清理兩個值以防止SQL注入http://stackoverflow.com/questions/601300/what-is-sql-injection – 2011-04-27 09:20:09

回答

0

如果您的代碼的唯一目的是獲取搜索名稱的產品數量,請使用SELECT COUNT(*)而不是對所有數據執行mysql_num_rows()。它會減少您的查詢時間和(不必要地)提取的數據量。

0

我不知道爲什麼這不起作用,因爲查詢似乎對我來說是正確的。我想建議您在編寫查詢這樣

$查詢= <<<SQL

SELECT * FROM product WHERE product_name LIKE "%$search%" LIMIT $start,30 

SQL;

請注意,不應該有任何空間或之後SQL;

0
$query = "SELECT * FROM product WHERE product_name LIKE '%" . $search . "%' LIMIT " . (int) $start. ",30"; 
0

你可以直接使用mysql_num_rows()

任何字符,但這裏是正確的代碼

$查詢= 「SELECT * FROM product WHERE product_name LIKE'%」。$ search。「%'LIMIT $ start,30」;

2

嘗試這個

$query = "SELECT * FROM `product` WHERE `product_name` LIKE '%".$search."%' LIMIT 0, 30"; 
0
$search = "ip"; 
$start = '0'; 
$query = "SELECT * FROM product WHERE product_name LIKE '%".$search."%' LIMIT $start,30"; 
$result = mysql_query($query)or die(mysql_error()); 
if(mysql_num_rows($result) == 0){ 
    $nrows = 0; 
} else{ 
    $nrows = mysql_num_rows($result); 
} 

//use mysql_num_rows($result) instead of empty($result) because in this situation $result is every time not empty so use inbuilt PHP function mysql_num_rows($result); 
+0

雖然這段代碼可能有助於解決問題,但它並沒有解釋_why_和/或_how_它回答了這個問題。提供這種附加背景將顯着提高其長期教育價值。請[編輯]您的答案以添加解釋,包括適用的限制和假設。 – 2016-10-04 15:03:57

+0

@TobySpeight如果您滿意我的答案編輯答覆積極。 thx兄弟。 – ImBS 2016-10-05 08:23:02