I am studying the subject of transactions and queries prepared in PHP. Testing I have created a code to combine transactions with prepared queries. It would be something like that (imagine that the connection is already established by PDO):
try {
// 1º Preparo la sentencia/as
$queryInsert = "INSERT INTO 'usuarios' ('idusuario', 'nombreusuario', 'emailusuario', 'passusuario') VALUES (NULL, ?, 'afasf@2224', ?)";
$queryDelete = "DELETE FROM 'usuarios' WHERE 'usuarios'.'idusuario' = ?";
$conexion->beginTransaction(); //2º Comenzamos la transaccion
$PDOstmt = $conexion->prepare($queryInsert); // 3º Preparo la sentencia primera
$nombreUsuario = "nanaki"; //4º Preparo los valores que enlazare con la sentencia
$passUsuario = "final fantasy 7";
$PDOstmt->execute(array($nombreUsuario, $passUsuario)); // 5º ejecuto
//Repito los puntos 3º, 4º y 5º...
$PDOstmt=$conexion->prepare($queryDelete);
$idusuario=13;
$PDOstmt->execute(array($idusuario));
//...Tantas sentencias como tengamos
$conexion->commit();//6º confirmo cambios...
echo "Usuario actualizado";
$PDOstmt->closeCursor();//Cerramos cursor
$conexion = null;
} catch (PDOException $exc) { //Capturo cualquier error
$conexion->rollback();//... o los revierto si hemos capturado algun error
echo "No se ha podido insertar usuario, error: " . $exc->getMessage();
exit();
}
The script works. What I wanted to know is if this way of doing it and of combining transactions and prepared consultations would be correct.
Greetings.