codes
Таблица
id code
-- ------
1 BB3CA4
2 2788BA
3 E3E3A5
. .
. .
. .
PHP массив из 500 полууникальных строк называется $codes
быть добавленным к codes
Таблица:
$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();
}
Я думаю, что это не очень хорошее решение!
Вторая попытка состояла в том, чтобы создать длинный SQL-запрос, склеив 500 SQL-запросов и запустить его одновременно.
Подготовленные операторы, выполняющие один и тот же запрос, но с разными параметрами, не нужно создавать несколько раз, только один раз, поэтому создайте оператор перед циклом, затем выполните итерацию, вы свяжете параметры и выполните запрос внутри цикла.
$stmt = $dbh->prepare("INSERT INTO codes ( code ) VALUES ( :code )");
foreach( $codes as $code ){
$stmt->bindParam( ':code', $code , PDO::PARAM_STR );
$stmt->execute();
}
С PDO
Вы даже можете немного уменьшить код, установив параметр / s в вызове execute:
$stmt = $dbh->prepare('INSERT INTO codes ( code ) VALUES ( :code )');
foreach($codes as $code) {
$stmt->execute(array('code' => $code));
}
$sql = "INSERT INTO codes ( code ) VALUES ";
foreach($codes as $code){
$sql = $sql . "($code),"}
$sql = rtrim($sql,",");
Я думаю, что это простой способ вставить 500 значений одновременно в базу данных.