php - MySQL:如何创建在数组索引上使用数组变量执行的查询?

标签 php mysql arrays indexing

我有一个包含 3 个变量的查询,我一遍又一遍地运行。如何创建一个接受值数组的查询,以便我可以运行一次查询并在一个结果中获取所有数据?这是一个例子:

  • SELECT * FROM 表 WHERE 第 1 列 = 3 AND 第 2 列 != 35 AND 第 3 列 > 10
  • SELECT * FROM 表 WHERE 第 1 列 = 9 AND 第 2 列 != 12 AND 第 3 列 > 293
  • SELECT * FROM 表 WHERE 第 1 列 = 6 AND 第 2 列 != 96 AND 第 3 列 > 39

我需要执行查询,以便每个数组的第一个值(索引 0)一起运行,然后每个数组的第二个值(索引 1)一起运行,依此类推。换句话说,我希望使用值[基于上面的示例](3,35,10)然后(9,12,293)等来运行查询。

查询需要是独立的,这意味着我需要能够通过 $_POST 将 3 个数组传递到远程服务器,该服务器将直接插入查询并在远程服务器上执行。

使用 INNOT IN 将不起作用,因为这些比较运算符不按数组索引的顺序排列。

任何想法将不胜感激。我尝试在很多地方寻找解决方案,但找不到任何东西。这种类型的查询可能被称为某种东西,所以也许这就是为什么我什么也没找到。

最佳答案

在 php 中,您可以按如下方式构建 UNION ALL 查询:

$vals = array(array(3,35,10), array (9,12,293)) //this can be built from $_POST or wherever

$queryArr = array();
foreach ($vals as $arr)
{
 $queryArr[] = "SELECT * FROM table WHERE column 1 = $arr[0] AND column 2 != $arr[1] AND column 3 > $arr[2]";
}

$query = implode(' UNION ALL ', $queryArr);  //note: if you want to do separate queries, rather than a UNION of them, just use $queryArr

PS:正如 outis 在他的评论中提到的,为了清晰起见,您应该避免 SELECT * 并指定字段。

关于php - MySQL:如何创建在数组索引上使用数组变量执行的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6147955/

相关文章:

mysql - Docker 容器异步运行

python - 在python中将数据文件读取到多维数组中

php - 具有不同列的多个 CSV 到 MySQL

php - Mime 类型 PDF php 上传

php - 我无法执行此查询... 'mysql' 'phpmyadmin'

mysql - 合并表并按升序获取输出

php - 多个 mysqli_queries 是否使用相同的连接?

mySQL "greatest"有两列可以为空

javascript - 从整数数组创建单链表

java - 仅打印 HashMap 中的特定键