当我替换
$ordering = "apples, bananas, cranberries, grapes";
与
$ordering = "apples, bananas, grapes";
我不再希望我的查询返回蔓越莓了,我已经这样写了:
$query = "SELECT * from dbname where FruitName LIKE '$ordering'";
当然这不起作用,因为我使用了LIKE错误。我已经阅读了各种描述如何使用LIKE的手册,但这对我来说并没有多大意义。
如果我将数据库的末尾更改为“LIKE”apple“”,它可以将其限制为仅限苹果。我是否必须在“,”上分解排序?还是有办法在查询中执行此操作?
答案 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)";