3

foreach3 つの配列からの値が 3 つの mysql 列に存在するかどうかを複数回 (内で) チェックする方法は?

一方向SELECT、列全体をフェッチし、列の値で配列を作成します。それから(in_array($value_to_check[$i], $whole_mysql_column)

他の方法は複数SELECT Column FROM Table WHERE Column = ?であり?$value_to_check[$i]

どちらの方法でも多くのリソースを使用するとします。より良い方法はありますか?

4

1 に答える 1

2

そもそもなぜそんなに多くのクエリを作成するのですか? 代わりに 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 つの列をチェックしたいとおっしゃっていましたが、結果の使用方法に応じて、UNION を使用するか、単に FROM の前に他の列をリストすることができます。

于 2013-08-13T22:48:08.150 に答える