0

在尝试进行 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

4 回答 4

1

您的查询无效:

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

替换=LIKE

编辑:
好的。现在你改变了它。问题仍然存在?

让我猜猜……你$search_text是逃过周围的''

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

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

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

或一个

$search_text = substr($search_text, 1, (strlen($search_text) - 2));
于 2012-04-20T08:15:47.290 回答
0

虽然这只是猜测

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

反引号`

于 2012-04-20T08:26:31.847 回答
0

从这行得到想法,我尝试在我的数据库上运行并为我工作

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

希望这会帮助你。

于 2012-04-20T08:41:14.613 回答
0

A. 我认为你已经净化了你的价值观

尝试

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

B. 使用 double%不是一种有效的搜索方式 try use LIKE '" . $searchText . "%'"is Better Approach 

C. 运行var_dump($searchText)以确保您正在输出您期望的准确数据

于 2012-04-20T08:38:37.917 回答