如何在PHP中编写类似的查询

时间:2011-10-18 00:02:45

标签: php sql

我有一个类似查询的PHP字符串 - 如下所示:

$select = "select category_id, category_name from categories where category_name like %"'.$category.'"%;

但我很确定这是完全错误的,我在百万报价中感到困惑:)

将这个查询放在一起的正确方法是什么?

谢谢!

8 个答案:

答案 0 :(得分:2)

如果您正在寻找“最佳做法”,则应使用prepared statements查看mysqli class。话虽如此,

  1. 您的引号位于$category变量的后方("''"
  2. 语句中的%应位于引号(')内,而不是在引号内

答案 1 :(得分:2)

您希望字符串中的%通配符不在其外部。

另外,如果你想评估字符串中的php变量,你应该支持变量。

" select category_id, category_name from categories where category_name like '%{$category}%' "

或连接它

" select category_id, category_name from categories where category_name like '%" . $category . "%' "

答案 2 :(得分:1)

您可以使用位置参数。不确定您使用的数据库服务器,但是说您正在使用PDO层,然后查看PDO::prepare

答案 3 :(得分:1)

最好以不同的方式做,但要回答问题,如果使用双引号,则不需要将变量与点连接

$select = "select category_id, category_name from categories where category_name like '%{$category}%'";

答案 4 :(得分:1)

你弄乱了引号

"select [...] like '%".$category."%'";

那将成为

select [...] like '%something%'

但你应该使用查询参数,以避免sql注入

答案 5 :(得分:1)

这将是相对有用的:

$select = "select category_id, category_name from categories where category_name like '%"
     .mysql_real_escape_string($category)."%'";

但是,您可能希望另外转义LIKE内具有特殊含义的字符,包括%

另请注意,mysql将无法使用索引来优化此查询,这意味着它不会在大型数据库上执行。您可能希望调查myISAM全文索引,以便在大型数据集上进行文本搜索。

答案 6 :(得分:0)

我很确定它只是:

$select = "select category_id, category_name from categories
           where category_name like '%$category%'";

答案 7 :(得分:0)

尝试...

$select = "select * from categories
       where category_name like '%$category%'";