codes
表
id code
-- ------
1 BB3CA4
2 2788BA
3 E3E3A5
. .
. .
. .
要添加到$codes
表的名为codes
的500个半唯一字符串的PHP数组:
$codes = array( 'AC2BE4', 'BC61A2', '34CE5A', ... );
我的PDO数据库连接对象:
$dbh = new PDO( "mysql:host=$host;dbname=$db", $user, $pass );
将PDO插入执行在PHP循环中:
foreach( $codes as $code ){
$stmt = $dbh->prepare("INSERT INTO codes ( code ) VALUES ( :code )");
$stmt->bindParam( ':code', $code , PDO::PARAM_STR );
$stmt->execute();
}
我认为这不是一个好的解决方案!
第二次尝试是通过粘合500个SQL查询并立即运行来构建一个长SQL查询。
答案 0 :(得分:3)
执行相同查询但具有不同参数的预处理语句不必多次创建,只需创建一次,因此在循环之前创建语句,然后迭代,绑定参数并在循环内执行查询。
$stmt = $dbh->prepare("INSERT INTO codes ( code ) VALUES ( :code )");
foreach( $codes as $code ){
$stmt->bindParam( ':code', $code , PDO::PARAM_STR );
$stmt->execute();
}
使用PDO
,您甚至可以通过在执行调用中设置参数来减少代码:
$stmt = $dbh->prepare('INSERT INTO codes ( code ) VALUES ( :code )');
foreach($codes as $code) {
$stmt->execute(array('code' => $code));
}
答案 1 :(得分:-1)
$sql = "INSERT INTO codes ( code ) VALUES ";
foreach($codes as $code){
$sql = $sql . "($code),"
}
$sql = rtrim($sql,",");
我认为这是一次将500个值插入数据库的简单方法。