준비된 문과의 트랜잭션을 수행 할 수있는 방법이 있습니까? 거래와 http://php.net/manual/en/mysqli.prepare.php : 내 말은MySQLi 준비된 문 및 트랜잭션
나는 $mysqli->autocommit(FALSE);
및 $mysqli->commit();
및 $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();
나는 주위를 둘러 보았다 한 다음과 같은 예를 사용할 수 있지만 준비된 문 (안 PDO)를 사용의 예를 찾을 수 없습니다 나는 여기에 언급 된 예제들만 찾아 보았습니다 : http://book.opensourceproject.org.cn/lamp/mysql/mysqlstored/opensource/0596100892/mysqlspp-chp-13-sect-2.html 트랜잭션과 prepared statement는 절대 혼재하지 않습니다.
함께 사용하는 것이 좋지 않습니까?
고맙습니다. :) 루프가 끝난 후 오류를 확인하고 오류가 발생하면 롤백해야하지 않습니다. (오류가없는 경우 커밋합니다) – Yerel
mysqli보다 PDO의 다른 큰 장점 중 하나입니다. 예외를 던지므로 오류 코드를 계속해서 확인하지 않아도되므로 롤백 또는 커밋에 대한 결정을 크게 단순화 할 수 있습니다. – Charles
OMG,이게 너무 많은 도움이됩니다. 나는 INSERT 명령으로 ~ 5000 개의 행을 작성한 스크립트를 작성했다. 완료하는 데 몇 시간이 걸렸다. '$ mysqli-> autocommit (FALSE);와'$ mysqli-> commit(); '을 추가하면 몇 분 안에 동작하게됩니다! :-) –