使用WHERE子句作为MySQL查询中的变量不起作用

时间:2011-11-16 19:18:46

标签: php mysql

这真的很奇怪。

此查询显然有效:

$query = mysql_query("SELECT * FROM restaurant_page WHERE title LIKE '%$search_title%'");

但是,这不是:

$category = 'restaurant_page';

$query = mysql_query("SELECT * FROM '$category' WHERE title LIKE '%$search_title%'");

使用第二个查询,我得到资源布尔错误。

$category是用户想要搜索的表。当我用变量打印出查询时,它与第一个完全相同。为什么这不起作用?

7 个答案:

答案 0 :(得分:2)

使用变量创建的查询是否在表名周围有引号?这对我来说似乎是个错误。

答案 1 :(得分:1)

在mysql查询中,不要在$ category附近加上引号。

$query = mysql_query("SELECT * FROM $category WHERE title LIKE '%$search_title%'");

答案 2 :(得分:1)

'$category'删除单引号。

"SELECT * FROM '$category' WHERE title LIKE '%$search_title%'"
---------------^^^^^^^^^^^^

如果需要,请用反引号括起$category。仅当$category包含MySQL保留关键字时才需要这样做。但是,因为它是一个可能成为可能的变量。

$query = mysql_query("SELECT * FROM `$category` WHERE title LIKE '%$search_title%'");

当然,请不要忘记逃避$category,因为它可能是用户输入的。我们假设您已经为$search_title这样做了。

$category = mysql_real_escape_string($category);

答案 3 :(得分:1)

请勿在表名周围使用单引号,而应使用反引号(`):

$query = mysql_query("SELECT * FROM `$category` WHERE title LIKE '%$search_title%'");

NB。请确保$category$search_title不是普通用户提供的变量

答案 4 :(得分:0)

为什么你在$ category附近有引号 - 删除这些并且它应该有效。

答案 5 :(得分:0)

您应始终将变量与实际字符串分开。做这样的事情:

$category = "restaurant_page";

$query = mysql_query("SELECT * FROM `".$category."` WHERE title LIKE
'%".$search_title."%'");

答案 6 :(得分:0)

LOL。这让我的一天。 删除$ category上的引号。我确定这只是一个有趣的错误。我们所有人都犯了一些错误。和合

要解决这个问题,可以解决这个问题。到"

$query = mysql_query("SELECT * FROM ".$category." WHERE title LIKE '%$search_title%'");