有沒有辦法用預處理語句做事務?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://php.net/manual/en/mysqli.prepare.php與交易,我只能在這裏找到像這些提到的例子:http://book.opensourceproject.org.cn/lamp/mysql/mysqlstored/opensource/0596100892/mysqlspp-chp-13-sect-2.html其中事務和預處理語句不會相互混合。
將它們一起使用會錯誤嗎?
非常感謝:)我不應該檢查循環後的錯誤,並回滾錯誤(並提交如果沒有錯誤) – Yerel 2011-03-21 00:25:07
這是PDO超過mysqli的其他重大優勢之一 - 您可以將它設置爲拋出異常,因此不必一遍又一遍地檢查錯誤代碼,這意味着回滾或提交的決定可以大大簡化。 – Charles 2011-03-21 00:30:42
OMG,這對我有很大的幫助。我製作了一個'插入〜5000行的腳本,完成需要數小時。添加'$ mysqli-> autocommit(FALSE);'和'$ mysqli-> commit();'讓它在幾分鐘內運行! :-) – 2012-04-12 18:31:36