¿Hay alguna manera de realizar transacciones con declaraciones preparadas?Declaraciones y transacciones preparadas de MySQL
quiero decir puedo utilizar el siguiente ejemplo con $mysqli->autocommit(FALSE);
y $mysqli->commit();
y $mysqli->rollback();
//Preparing the statment
$insert_stmt=$mysqli->prepare("INSERT INTO x VALUES(?,?)")
or die($mysqli->error);
//associate variables with the input parameters
$insert_stmt->bind_param("is", $my_number,$my_string); //i=integer
//Execute the statement multiple times....
for ($my_number = 1; $my_number <= 10; $my_number++)
{
$my_string="row ".$my_number;
$insert_stmt->execute() or die ($insert_stmt->error);
}
$insert_stmt->close();
He mirado alrededor, pero no encontramos un ejemplo del uso de declaraciones preparadas (no DOP): http://php.net/manual/en/mysqli.prepare.php con las transacciones, Solo encuentro ejemplos como estos mencionados aquí: http://book.opensourceproject.org.cn/lamp/mysql/mysqlstored/opensource/0596100892/mysqlspp-chp-13-sect-2.html donde las transacciones y las declaraciones preparadas nunca se entremezclan.
¿Sería incorrecto usarlos juntos?
Muchas gracias :) no debería comprobar si hay un error después del bucle, y revertir el error (y confirmar si no hay ningún error) – Yerel
Esa es una de las otras grandes ventajas de PDO sobre mysqli - puede configurarlo para lanzar excepciones y, por lo tanto, no es necesario verificar los códigos de error una y otra vez, lo que significa que la decisión de deshacer o comprometerse se puede simplificar en gran medida. – Charles
Dios mío, esto me ayuda mucho. Hice una secuencia de comandos que 'INSERT'ed ~ 5000 filas, le tomaba horas terminar. Al agregar '$ mysqli-> autocommit (FALSE);' y '$ mysqli-> commit();' ¡se ejecutó en minutos! :-) –