Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php如何在mysql中多次(在“foreach”中)检查数组中的值?_Php_Mysql_If Statement_Foreach - Fatal编程技术网

Php如何在mysql中多次(在“foreach”中)检查数组中的值?

Php如何在mysql中多次(在“foreach”中)检查数组中的值?,php,mysql,if-statement,foreach,Php,Mysql,If Statement,Foreach,如果三个mysql列中存在来自三个数组的值,如何多次检查(在foreach中) 单向选择,获取整个列并使用列值创建数组。然后(在数组中($value\u to\u check[$i],$whole\u mysql\u列) 另一种方法是从表中选择多个列,其中列=?和?是$value\u to\u check[$i] 假设这两种方法都使用了大量资源。有更好的方法吗?为什么要从这么多查询开始?为什么不创建一个使用IN的大型SQL查询呢 $sqlValuesToCheck = '('; foreach

如果三个mysql列中存在来自三个数组的值,如何多次检查(在
foreach
中)

单向
选择
,获取整个列并使用列值创建数组。然后
(在数组中($value\u to\u check[$i],$whole\u mysql\u列)

另一种方法是从表中选择多个
列,其中列=?
$value\u to\u check[$i]


假设这两种方法都使用了大量资源。有更好的方法吗?

为什么要从这么多查询开始?为什么不创建一个使用IN的大型SQL查询呢

$sqlValuesToCheck = '(';
foreach ($value_to_check as $value) {
    $sqlValueToCheck .= "'" . $mysqli->real_escape_string($value) . "',";
}
$sqlValueToCheck = rtrim($sqlValueToCheck, ',') . ')';

$result = $mysqli->query("SELECT `Column` FROM `Table` WHERE `Column` IN {$sqlValueToCheck}");

上面的将获得数组中的所有“Table”。“Column”值。您提到要检查3列……根据您希望使用结果的方式,您可以使用并集或只是在FROM之前列出其他列。

后者将更有效。但是,如果例如1000
选择
,则不太好。是的你完全正确。对于一些低数值范围,它会更好,然后在某一点上,前者确实会变得更好。我认为除了你放的2之外,没有其他方法了。你想对照创建的三个mysql列检查的三个数组如何,数据从何而来?3个数组来自excel文件(php从excel接收数据)。如果您可以单击问题下方的
edit
,您可能会看到最初的长问题,其中我描述了所有过程。将尝试提供建议。谢谢