1

それを閉じる前に完全な質問を読んでください:)私はmysqli
で準備されたステートメントを探しています(PDOではなく重要です。使用できず、一部のPDOコードをmysqliに転送できないためです。)、長い間挿入できます多くの値 (約 2000) を持つクエリ。ただし、クエリを準備する必要があります。


だから私はそのように始めました:

$array = array("a1", "a2", "a3","a5", "a7", "a5","a9", "a32", "a3", "a4"); 
// AND SO ON UP TO 2000
$type = "s";
$end = count($array);

$query = "INSERT INTO table (value) VALUES (?)";
for ($i = 0; $i <= $end - 1; $i++) 
{
    $query  .= ", (?)";
    $type   .= "s";
}

$stmt = $conn->prepare($query); 
$stmt->bind_param("$type", /* PROBLEM */); // HERE IS THE PROBLEM!!!
$stmt->execute();
$stmt->close();


しかし、今私の問題は、「bind_param」の変数を動的にバインドするにはどうすればよいですか?
これは 2000 回の挿入には遅すぎるため、"execute" で for ループのようなものを表示しないでください :)。

私は次のようなことを意味します

$allvalues = "";
foreach ($array as $value) 
{
    $allvalues .= "$value ";
}
$stmt->bind_param("$type", $allvalues);

しかし、もちろん、私はそれを縛ることはできません。

4

2 に答える 2

4

call_user_func_array配列を使用して関数を呼び出すために使用します。

または、実行するためにすべての変数を渡すだけで、使用する必要さえありませんbind_param

于 2013-02-26T16:21:07.587 に答える