2014-08-27 76 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());