从mysql查询中的数组中选择WHERE

时间:2013-08-13 11:27:36

标签: php mysql arrays

我正在尝试从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
    ")
*/

但我不知道会有多少元素

4 个答案:

答案 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扩展程序:MySQLiPDO_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."'
  ")
}