Saya akan menggunakan kode berikut.
foreach ($user_emails as $value) {
$query = db_insert('banned_users');
$query->fields(array('email' => $value))->execute();
}
Atau, Anda dapat menggunakan kode berikut.
$query = db_insert('banned_users')->fields(array('email'));
foreach ($user_emails as $value) {
$query->values(array('email' => $value));
}
$query->execute();
Dengan MySQL, kueri menggunakan sintaks multi-nilai.
Dengan basis data lain, kueri yang dieksekusi akan menjadi satu untuk setiap panggilan $query->values()
, dibungkus dengan transaksi. Ini berarti pertanyaan akan dibatalkan ketika salah satu dari mereka gagal. Bahkan, kode yang dieksekusi dari InsertQuery :: execute () adalah yang berikut.
// Each insert happens in its own query in the degenerate case. However,
// we wrap it in a transaction so that it is atomic where possible. On many
// databases, such as SQLite, this is also a notable performance boost.
$transaction = $this->connection->startTransaction();
try {
$sql = (string) $this;
foreach ($this->insertValues as $insert_values) {
$last_insert_id = $this->connection->query($sql, $insert_values, $this->queryOptions);
}
}
catch (Exception $e) {
// One of the INSERTs failed, rollback the whole batch.
$transaction->rollback();
// Rethrow the exception for the calling code.
throw $e;
}
Singkatnya, saya akan menggunakan kode yang Anda gunakan jika nilai yang dimasukkan independen satu sama lain; Saya akan menggunakan kode yang saya tunjukkan ketika nilainya tergantung satu sama lain.
Dalam kasus Anda, email-email itu independen satu sama lain. Jika Anda akan menggunakan potongan kedua yang saya perlihatkan, tabel database akan berisi semua nilai, ketika sub-kueri tidak gagal, atau tidak ada ketika satu sub-kueri gagal.
Anda juga bisa menggunakan drupal_write_record()
, meskipun saya lebih suka potongan lainnya.
foreach ($user_emails as $value) {
drupal_write_record('banned_users', array('email' => $value));
}
Saya tidak melihat pro dalam menggunakan cuplikan ini.
Referensi
$values
dan hanya panggil 1execute()
. drupal.org/node/310079 Ini digunakan misalnya dalam pembuatan blok standar profil standar.