Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa menggunakan pernyataan siap yang dikombinasikan dengan Transaksi dengan PHP?

Panggil saja "eksekusi" setelah Anda memanggil "beginTransaction".

Di mana Anda memanggil "bersiap" tidak terlalu penting.

Berikut ini contoh lengkapnya:

http://php.net/manual/en/pdo.begintransaction.php

CONTOH:

 try {
    $cnx = new PDO($dsn,$dbuser,$dbpass);   
    $cnx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $cnx->beginTransaction();

    $stmt=$cxn->prepare("SELECT * FROM users WHERE username=?");
    $stmt->execute(array($user_input));

    $stmt_2=$cxn->prepare("SELECT * FROM othertable WHERE some_column=?");
    $stmt_2->execute(array($user_input_2));

    $cnx->commit();
  }
  catch (Exception $e){
    $cxn->rollback();
    echo "an error has occurred";
  }

PS:1) Saya berasumsi, tentu saja, bahwa $user_input dan $user_input_2 tersedia segera. Anda tidak ingin transaksi Anda dibiarkan terbuka terlalu lama;)

2) Berdasarkan balasan komentar Anda di atas, saya pikir Anda mungkin membingungkan "eksekusi" dan "mulai tran/komit". Silakan lihat tautan saya.

3) Apakah Anda bahkan membutuhkan sebuah transaksi? Anda hanya melakukan dua "pilihan".

4) Terakhir, mengapa tidak melakukan satu "gabung" (atau penyatuan, jika kompatibel) alih-alih dua "pilih"?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah stempel waktu VARCHAR ke TIMESTAMP?

  2. Tambahkan bidang tersembunyi khusus dalam bentuk paypal dan dapatkan di halaman yang dialihkan

  3. Node MySQL mengeksekusi beberapa kueri secepat mungkin

  4. Bagaimana cara menyisipkan titik spasial mysql dengan model yii?

  5. PHP/MySQLi:SET lc_time_names dan DATE_FORMAT() menjadi kueri mysqli?