2012-03-15 135 views
2

我的搜索查詢$ s_query有問題。 用戶可以搜索類型(日期,標題,或位置),這相當於在科拉姆我的mysql數據庫php/mysql搜索查詢語法

$search_type =mysql_real_escape_string($_POST['type']); 
$search_query =mysql_real_escape_string($_POST['search_query']); 

if ($search_query == "") { 
    echo "<p>Please enter a search...</p>"; 
    exit;} 

$s_query = "SELECT * FROM `posts` WHERE `$search_type` == `$search_query` "; 

$s_result1=mysql_query($s_query); 

if (!$s_result1) { 
    die('Invalid query: ' . mysql_error()); 
    //header ("Location: /UC_page.html"); 
} 

$s_row = mysql_fetch_array($s_result1); 
$s_num1=mysql_numrows($s_result1); 
mysql_close(); 

mysql_error說: 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到正確的語法,以便在''1956'

我試過每一個操作符可能和每種語法,我可以找到,但我堅持。 有一次我得到了工作日期,但沒有任何字符串。 在此先感謝。

+0

不需要'=='只需一個'='就可以。 – 2012-03-15 21:28:42

回答

4

其實你有兩個問題。首先,你用`圍繞你的價值,這是無效的。改爲使用"'

而且,==是無效的語法,你需要使用一個單一的=代替。雖然,看着你在做什麼,你可能想使用LIKE來代替不區分大小寫的搜索。

所以此查詢應該工作:

SELECT * FROM `posts` WHERE `$search_type` = '$search_query' 

或者與LIKE

SELECT * FROM `posts` WHERE `$search_type` LIKE '$search_query' 
+0

謝謝!完美的作品! – user1107703 2012-03-15 21:33:43

3

您正在將`(在標籤按鈕的頂部)圍繞您的插入值。那些只能在現場。 YOu shoudl使用'(在斜線按鈕的頂部)作爲值。

+0

感謝您的回覆我試過並得到了mysql_error: 您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在'=='附近使用正確的語法Lorem Ipsum'' – user1107703 2012-03-15 21:28:50

0

這可以幫助你瞭解MySQL的期待是什麼查詢:

$s_query = "SELECT * FROM `posts` WHERE `" . $search_type . "` = " . $search_query; 

另外,還要確保你將所需的報價添加到$search_query。 EG:如果是字符串,則用'包圍它。