如何在php中使用LIKE进行查询

时间:2012-04-20 08:14:10

标签: php mysql

当我尝试执行LIKE选择查询时,我正在努力解决一些问题。这是我的代码:

$products = mysql_query("SELECT * FROM product WHERE 
                         prod_name LIKE '%" . $search_text . "%'")
            or die(mysql_error());

其中$ search_text是用户输入。当我尝试输入“sony”文本进行测试并运行它时,它向我显示了这样的错误消息:

Unknown column 'sony' in 'where clause'

我不知道错误在哪里。有人能告诉我什么是错的吗?

非常感谢你的帮助!

4 个答案:

答案 0 :(得分:1)

您的查询无效:

$products = mysql_query("SELECT * FROM product WHERE prod_name LIKE '%" . $search_text . "%'") or die(mysql_error());

=替换为LIKE

修改
Okaay。现在你改变了它。问题仍然存在?

让我猜一下......你的$search_text是否已被周围的''转义?

尝试回显该值,看看你得到了什么。您可能正在解析类似LIKE '%'sony'%'的内容。

如果是这种情况并且您的值会自动转义,您可以执行

$search_text = trim($search_text, "'");

$search_text = substr($search_text, 1, (strlen($search_text) - 2));

答案 1 :(得分:0)

虽然这只是猜测

你可能在变量$search_text周围有反引号。再次检查您的查询并确保变量包含单引号或双引号而不是反引号。

反击“

答案 2 :(得分:0)

一个。我认为你已经消毒了你的价值观

尝试

$searchText = mysql_real_escape_string ( $search_text );
$products = mysql_query ( "SELECT * 
        FROM product WHERE
        prod_name LIKE '%" . $searchText . "%'" ) or die ( mysql_error () );

B中。使用双%不是一种有效的搜索方式,尝试使用LIKE '" . $searchText . "%'"是更好的方法

℃。运行var_dump($searchText)以确保输出您期望的确切数据

答案 3 :(得分:0)

从这一行中获取想法,我尝试在我的数据库上运行并为我工作

"select * from product where prod_name like('%".$search_text."%')"

希望这会对你有所帮助。