Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 已准备好多重插入mysqli_Php_Mysql_Mysqli - Fatal编程技术网

Php 已准备好多重插入mysqli

Php 已准备好多重插入mysqli,php,mysql,mysqli,Php,Mysql,Mysqli,请在结束前阅读完整问题:) 我正在寻找一个带有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

请在结束前阅读完整问题:)

我正在寻找一个带有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

use来使用数组调用函数


或者只需将所有变量传递给执行,那么您甚至不需要使用
bind_param

我花了很长时间试图找到一个简单而优雅的解决方案来解决这个问题,并找到了一些完美的解决方案(适用于php5.6及以上版本)


这个…$array的东西叫做a。我在尝试插入多行时遇到了一个问题,因为它没有以正确的顺序给出值,所以只能创建一个包含所有行的数组。

我花了很多时间试图找到一个简单而优雅的解决方案,并找到了一些完美的解决方案(适用于php5.6及更高版本)


这个…$array的东西叫做a。我在尝试插入多行时遇到了一个问题-因为它没有以正确的顺序给出值-所以只能创建一个包含所有行的数组。

“(重要的,不是PDO,因为我不能使用它,也不能将一些PDO代码传输到mysqli。)“--PDO是跨数据库的,这就是大多数人选择它的原因…好的,但是为什么我要使用不同的数据库呢?我只需要mysql,我测试了PDO和mysqli,mysqli总是更快,所以不需要PDO。@CopyDevil你的证明在哪里?我用microtime()测试了它,但如果这只是巧合,不是那样的话,请给我看一些其他的东西,一个例子或其他东西,这会对我有很大帮助:)谢谢!“(重要的是,不是PDO,因为我不能使用它,也不能将一些PDO代码传输到mysqli。)”--PDO是跨数据库的,这就是为什么大多数人选择它……好吧,但为什么我要使用不同的数据库?我只需要mysql,我测试了PDO和mysqli,mysqli总是更快,所以不需要PDO。@CopyDevil你的证明在哪里?我用microtime()测试了它,但如果这只是巧合,不是那样的话,请给我看一些其他的东西,一个例子或其他东西,这会对我有很大帮助:)谢谢@CopyDevil如果您想修改代码,使其在较小的块中工作,我敢打赌,将2000个参数传递给函数最终将导致*太阳镜*堆叠溢出。YYYYEEEEEEEEAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*太阳镜*堆叠溢出。YYYYEEEEEEAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH。
$allvalues = "";
foreach ($array as $value) 
{
    $allvalues .= "$value ";
}
$stmt->bind_param("$type", $allvalues);
$array = array("a1", "a2", "a3", "a4", "a5", "a6"); 

$type = str_repeat("s", 6);

$query = "INSERT INTO table (value) VALUES (?)" . str_repeat(", (?)", 6);

$stmt = $conn->prepare($query); 
$stmt->bind_param($type, ...$array);
$stmt->execute();
$stmt->close();