我有一个类似查询的PHP字符串 - 如下所示:
$select = "select category_id, category_name from categories where category_name like %"'.$category.'"%;
但我很确定这是完全错误的,我在百万报价中感到困惑:)
将这个查询放在一起的正确方法是什么?
谢谢!
答案 0 :(得分:2)
如果您正在寻找“最佳做法”,则应使用prepared statements查看mysqli
class。话虽如此,
$category
变量的后方("'
,'"
)%
应位于引号('
)内,而不是在引号内答案 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%'";