1

我正在尝试从 mysql 查询中的数组中选择

result = mysql_query("
SELECT * FROM fruit_db
WHERE fruit='".$url."'
")

$url 已由 $_GET 创建并分解为一个数组。例如,它可以是“苹果”或“苹果、香蕉、橙子”。不确定是否内爆回字符串。

我需要选择“苹果”或“香蕉”或“橙子”,而不是“苹果、香蕉、橙子”。

我习惯于计算字符串的元素,并循环遍历它们,但不是在 mysql 查询中,如果有简单的方法,我无法解决。我试过类似的东西

/*    
    result = mysql_query("
    SELECT * FROM fruit_db
    WHERE fruit='".$url[0]."'
    OR  fruit='".$url[1]."'
    // etc
    ")
*/

但我不知道会有多少元素

4

4 回答 4

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.

于 2013-08-13T11:28:53.653 回答
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')
于 2013-08-13T11:29:22.717 回答
0

你可以使用

SELECT column_name FROM table_name WHERE column_name IN ("1","2");

于 2013-08-13T11:31:44.380 回答
0

尝试这个

$url=explode(",",$_GET['fruit']);

foreach($url as $fr){
  $result = mysql_query("
  SELECT * FROM fruit_db
  WHERE fruit='".$fr."'
  ")
}
于 2013-08-13T11:33:37.253 回答