Php如何在mysql中多次(在“foreach”中)检查数组中的值?
如果三个mysql列中存在来自三个数组的值,如何多次检查(在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
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
,您可能会看到最初的长问题,其中我描述了所有过程。将尝试提供建议。谢谢