当我尝试执行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'
我不知道错误在哪里。有人能告诉我什么是错的吗?
非常感谢你的帮助!
贝
答案 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."%')"
希望这会对你有所帮助。