2012-06-24 40 views
0

我写了一个非常简单的mysql行,用于搜索关键字的非常简单的搜索栏,但是我遇到了一个错误。 (我有一种感觉,那是因为搜索的长度)PHP-Mysql错误与%

$query = "SELECT * FROM entries WHERE name='%".$search."%' "; 

作品,但

$query = "SELECT * FROM entries WHERE desc='%".$search."%' "; 

没有。

在数据库中,名称大约有20个字符,而desc大约有700个字符。我检查拼写和所有内容,它只是输出一个错误。

这是不行的,因为它有太多的字符扫描?

非常感谢(提前)!

+0

2个问题:1。你没有错误检查(否则这个问题qould没有被要求在所有或以不同的方式),2。你可能是一个目标SQL注入。您应该使用准备好的语句,或者至少使用'mysql_real_escape_string()'函数。 – glglgl

+0

谢谢,但我不知道你将如何做Mysql的错误检查? (顺便说一句,是的,我保护我的SQL,但我没有把它包括在我的例子里都是) – Ninjiangstar

+0

好吧,如果你发现函数调用出错了,你可以调用例如['mysql_error()'](http://php.net/manual/en/function.mysql-error.php)如果你使用旧界面。 mysqli和PDO接口肯定有相似的功能。 – glglgl

回答

5

desc是mysql的关键词,你需要引用它,你应该使用LIKE而不是=,并确保你的$search已经被转义。

$query = "SELECT * FROM entries WHERE `desc` LIKE '%".$search."%' "; 
+0

...并且不要忘记逃避'$ search' ... – poncha

+0

@poncha是的,这是真的。 – xdazz

+0

哦,我几乎忘了LIKE,并且非常感谢那个答案! – Ninjiangstar