2011-02-22 81 views
0

我有以下代码:快速的mysql_query()问题

mysql_query("SELECT * FROM list WHERE name LIKE '%'$searchTerm'%' OR description LIKE '%'$searchTerm'%';"); 

唯一的问题是,在纯SQL,这样的查询将如下所示:

SELECT * FROM list WHERE name LIKE '%asdf%' OR description LIKE '%asdf%' 

我感到困惑的是什么是如何正确地将我的变量放入字符串中,通常mysql_query中的变量将被单引号括起来,但在SQL中添加单引号会使我感到困惑。

我试过连接.但我不认为这是一个好的解决方案。

+0

那么首先,这是开放的SQL注入攻击......见http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection -in-PHP。 – mellamokb 2011-02-22 22:59:11

+0

我提前逃脱了字符串,新变量很好。 – AKor 2011-02-22 22:59:50

+0

好的,只是想确保:) – mellamokb 2011-02-22 23:00:16

回答

4
mysql_query("SELECT * FROM list WHERE name LIKE '%$searchTerm%' OR description LIKE '%$searchTerm%';"); 

为什么你不只是...

echo "SELECT * FROM list WHERE name LIKE '%$searchTerm%' OR description LIKE '%$searchTerm%';" 

...,看看如何查询居然会像..

+0

你应该总是对传入语句的任何字符串执行'mysql_real_escape_string($ searchTerm)'操作,否则可能会造成巨大的安全风险。 – Jesse 2011-08-04 20:56:48

0

这是我最清楚的方式,使用“”来连接:

mysql_query("SELECT * FROM list WHERE name LIKE '%".$searchTerm."%' OR description LIKE '%".$searchTerm."%'"); 

尝试和使用,它应该在你想要什么:)

1

我不知道PHP的工作,但我建议使用替换功能来管理人物“ ''到$ searchterm中。这也可以避免sql注入..