我正在尝试从mysql查询中的数组中进行SELECT
result = mysql_query("
SELECT * FROM fruit_db
WHERE fruit='".$url."'
")
$ url已由$ _GET创建并展开为数组。例如,它可以是'apple'或'apple,banana,orange'。不确定是否要重新插入字符串。
我需要选择'apple'或'banana'或'orange',而不是'apple,banana,orange'。
我习惯于计算字符串的元素,并循环遍历它们,但不是在mysql查询中,如果有一个简单的方法,我就无法解决。 我尝试过像
这样的东西/*
result = mysql_query("
SELECT * FROM fruit_db
WHERE fruit='".$url[0]."'
OR fruit='".$url[1]."'
// etc
")
*/
但我不知道会有多少元素
答案 0 :(得分:5)
尝试IN
内爆数组$url
,如
$sql = "SELECT * FROM fruit_db WHERE fruit IN (".implode(',',$url).")";
确保$url
是一个数组。
并且由于整个mysql_*
扩展程序(提供带有前缀ext/mysql PHP
命名的所有函数)从mysql_*
开始正式弃用,并尝试避免PHP v5.5.0
语句将来删除。
您可以更好地使用其他两个MySQL
扩展程序:MySQLi
和PDO_MySQL
,其中任何一个都可以用来代替ext/mysql
。
答案 1 :(得分:2)
"SELECT * FROM fruit_db WHERE fruit IN ('".implode("','", $url)."')";
假设您的$url = array('apple','banana','orange');
然后sql将是:
SELECT * FROM fruit_db WHERE fruit IN ('apple','banana','orange')
答案 2 :(得分:0)
你可以使用
SELECT column_name FROM table_name WHERE column_name IN(“1”,“2”);
答案 3 :(得分:0)
试试这个
$url=explode(",",$_GET['fruit']);
foreach($url as $fr){
$result = mysql_query("
SELECT * FROM fruit_db
WHERE fruit='".$fr."'
")
}