2014-08-27 86 views
1

我想知道什麼正確的語法使用mysql_query將搜索匹配'密鑰'的東西的表。正確的表搜索語法(mysql)(php)

例如,假設我想搜索客戶端。並假設這是一個非用戶輸入。 I.E從腳本運行。

$client_search = mysql_query("SELECT * FROM `clients` WHERE `client_name LIKE '%".$_POST['key']."%' OR `crmurl` LIKE '%".$_POST['key']."%' ORDER BY `client_name`") or die(mysql_error()); 
$fetch_client = mysql_fetch_array($client_search); 

我辦這樣的事我得到告訴語法不正確,更具體的錯誤..

`You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'crmurl` LIKE '%Fake%' ORDER BY `client_name`' at line 1` 

但我看不出什麼不妥,有沒有人用鋒利 - 在那裏可以提供幫助。

請注意:請我真的不想讓5個人告訴我mysql是如何過時的,它應該使用PDO ::,我知道它是一個快速腳本,不需要用戶輸入並已清理表數據。

回答

4

由於您將整個查詢放在雙引號內,因此不需要附加sql字符串,因爲在雙引號內,所有PHP變量都將被替換爲相應的值。你也錯過了一個反向字段client_name

$client_search = mysql_query("SELECT * FROM `clients` WHERE `client_name LIKE '%".$_POST['key']."%' OR `crmurl` LIKE '%".$_POST['key']."%' ORDER BY `client_name`") or die(mysql_error()); 
                  missing there^  

更改查詢

$client_search = mysql_query("SELECT * FROM `clients` WHERE `client_name` LIKE '%$_POST['key']%' OR `crmurl` LIKE '%$_POST['key']%' ORDER BY `client_name`") or die(mysql_error()); 
+0

非常感謝!如果我有更多的代表我會投票。 – 2014-08-27 09:11:30

+0

你可以接受他的回答 – Arijoon 2014-08-27 09:22:19

0

嘗試這樣的:

$client_search = mysql_query("SELECT * FROM `clients` WHERE `client_name LIKE '%$_POST[key]%' OR `crmurl` LIKE '%$_POST[key]%' ORDER BY `client_name`") or die(mysql_error()); 
$fetch_client = mysql_fetch_array($client_search); 
0

更改SQL查詢來

SELECT * FROM `clients` WHERE `client_name` LIKE '%$_POST[key]%' OR `crmurl` LIKE '%$_POST[key]%' ORDER BY `client_name`" 

SELECT * FROM `clients` WHERE client_name LIKE '%$_POST[key]%' OR crmurl LIKE '%$_POST[key]%' ORDER BY client_name" 
0

修改您的查詢像這樣

"SELECT * FROM `clients` WHERE `client_name` LIKE '%".$_POST['key']."%' OR `crmurl` LIKE '%".$_POST['key']."%' ORDER BY `client_name`" 

有一個反引號失蹤CLIENT_NAME

0

您查詢的列名失蹤`

Select * from `clients` WHERE `client_name` ... 

所以查詢應該是這樣的 -

$client_search = mysql_query("SELECT * FROM `clients` WHERE `client_name` LIKE '%".$_POST['key']."%' OR `crmurl` LIKE '%".$_POST['key']."%' ORDER BY `client_name`") or die(mysql_error()); 
0

您錯過了在表格名稱處關閉「`」。 將其更改爲

WHERE `client_name` 

然後最終的查詢將會像

$client_search = mysql_query("SELECT * FROM `clients` WHERE `client_name` LIKE '%".$_POST['key']."%' OR `crmurl` LIKE '%".$_POST['key']."%' ORDER BY `client_name`") or die(mysql_error()); 
0

你在你的SQL語法錯誤

$client_search = mysql_query("SELECT * FROM `clients` WHERE `client_name LIKE '%".$_POST['key']."%' OR `crmurl` LIKE '%".$_POST['key']."%' ORDER BY `client_name`") or die(mysql_error()); 

更換

`CLIENT_NAME

client_name

所以您的查詢就會像

$client_search = mysql_query("SELECT * FROM `clients` WHERE `client_name` LIKE '%".$_POST['key']."%' OR `crmurl` LIKE '%".$_POST['key']."%' ORDER BY `client_name`") or die(mysql_error());