简单的PHP查询问题:LIKE

时间:2010-05-14 18:12:07

标签: php mysql sql-like

当我替换

$ordering = "apples, bananas, cranberries, grapes";

$ordering = "apples, bananas, grapes";

我不再希望我的查询返回蔓越莓了,我已经这样写了:

$query = "SELECT * from dbname where FruitName LIKE '$ordering'";

当然这不起作用,因为我使用了LIKE错误。我已经阅读了各种描述如何使用LIKE的手册,但这对我来说并没有多大意义。

如果我将数据库的末尾更改为“LIKE”apple“”,它可以将其限制为仅限苹果。我是否必须在“,”上分解排序?还是有办法在查询中执行此操作?

4 个答案:

答案 0 :(得分:8)

LIKE通常用于部分匹配字符串,例如你会用

WHERE fruitname LIKE 'app%' 
找到'apple'和'apples'。

您(可能)想要的是IN子句,例如

WHERE fruitname IN ('apples', 'bananas', 'grapes')

答案 1 :(得分:2)

可能应该是:

SELECT * FROM database WHERE FruitName IN ('apples','bananas','grapes')

答案 2 :(得分:2)

尝试使用

SELECT * from dbname WHERE FruitName IN ('apples','bananas','grapes')

如果您需要的结果与IN列表的顺序相同,则使用和ORDER BY扩展查询

SELECT * from dbname WHERE FruitName IN ('apples','bananas','grapes') ORDER BY FruitName

答案 3 :(得分:2)

您需要爆炸字符串并将其转换为适当的SQL。这可能是您想要最终得到的SQL语法:

SELECT * FROM dbname WHERE FruitName IN ('apples', 'bananas', 'grapes')

PHP代码:

$fruits = array();

foreach (explode(', ', $ordering) as $fruit) {
    $fruits[] = "'" . mysql_real_escape_string($fruit) . "'";
}

$fruits = implode(', ', $fruits);
$sql = "SELECT * FROM dbname WHERE FruitName IN ($fruits)";