PHP数组的数组插入Mysql
请求您提供帮助,了解如何通过单个查询将以下类型的PHP数组插入Mysql,方法是避免下面查询中的foreach循环 与下面的查询(foreach)相比,使用单个查询插入的性能提高了多少 PHP数组PHP数组的数组插入Mysql,php,arrays,Php,Arrays,请求您提供帮助,了解如何通过单个查询将以下类型的PHP数组插入Mysql,方法是避免下面查询中的foreach循环 与下面的查询(foreach)相比,使用单个查询插入的性能提高了多少 PHP数组 ( [0] => Array ( [Name] => NNN1 [Type] => TTT1 ) [1] => Array ( [Name]
(
[0] => Array
(
[Name] => NNN1
[Type] => TTT1
)
[1] => Array
(
[Name] => NNN2
[Type] => TTT2
)
查询:
foreach ($array as $i) {
$na = $item["Name"];
$ty = $item["Type"];
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
$dc = $db->prepare("INSERT INTO allocation (`Name`, `Type`) VALUES (?, ?) ON DUPLICATE KEY UPDATE Type = IF(Type != VALUES(Type), VALUES(Type), '$ty')");
$dc->bind_param("ss", $na, $ty);
$dc->execute();
$dc->execute();
$dc->close();
}
我认为你使用了错误的变量。在你的圈子里 $i应该是$item 保持数据库连接代码不在循环中
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
foreach ($array as $item) // $i should be $item
{
$na = $item["Name"];
$ty = $item["Type"];
$dc = $db->prepare("INSERT INTO allocation (`Name`, `Type`) VALUES (?, ?) ON DUPLICATE KEY UPDATE Type = IF(Type != VALUES(Type), VALUES(Type), '$ty')");
$dc->bind_param("ss", $na, $ty);
$dc->execute();
$dc->execute();
}
$dc->close();
尽管仍在使用
foreach
,但您可以在循环之前移动newmysqli()
和$db->prepare
。然后删除第二个$dc->execute()
Hi Carl(),如果我们进行更改,那么数据将一次性插入(单SQL连接)还是需要更多连接。如果我们按照您的建议更改代码,我们将得到以下错误mysqli_stmt::bind_param():无法获取mysqli_stmt mysqli_stmt::execute():无法获取mysqli\u stmt mysqli\u stmt::close():无法获取mysqli\u stmty您的更新子句Type=IF(Type!=VALUES(Type),VALUES(Type),'$ty')
没有任何意义,因为VALUES(Type)
将与$ty
相同,因此您可以只编写Type=VALUES(Type)
数组有多大?对不起,这是一个输入错误是的,它正在工作,但我想通过避免foreach循环来插入数据,因为循环中的任何操作都需要许多连接(数组的长度),因此试图找到一种方法来避免此类问题使用PDO准备的语句插入多个值