Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да използвам подготвени извлечения, комбинирани с транзакции с PHP?

Просто извикайте „изпълни“, след като извикате „beginTransaction“.

Къде наричате „подгответе“ всъщност няма значение.

Ето пълен пример:

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

ПРИМЕР:

 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) Предполагам, разбира се, че $user_input и $user_input_2 са налични веднага. Не искате вашата транзакция да виси отворена ненужно дълго;)

2) Въз основа на вашия отговор на коментар по-горе, мисля, че може да обърквате „изпълнение“ и „започване на преобразуване/комитиране“. Моля, вижте връзката ми.

3) Имате ли дори нужда сделка? Вие просто правите две „избори“.

4) И накрая, защо не направите едно „присъединяване“ (или обединение, ако е съвместимо) вместо две „избори“?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на Like в MySQL за операции за търсене с помощта на шаблон

  2. ШИРОКИ таблици mysql

  3. копирайте един ред от таблица в друга и вмъкнете стойност на една колона в същата заявка

  4. Защо тази проста MySQL заявка не връща реда?

  5. Как да направите каскадни падащи списъци с помощта на mysql и php