如何在插入数据之前检查错误

时间:2012-05-31 12:09:11

标签: php mysql error-handling insert

我想向DB写几个查询以保存5个用户。但在保存之前我必须确定错误。例如,我插入了第一个用户,没有错误。但在尝试保存第二个之后,出现了错误(注意:不仅重复错误)。之后,我必须取消我保存的所有数据,并从数据库中删除第一个。这是一个坏主意,更好地检查错误SOMEHOW,并保存所有3个用户...

问题:如何在插入数据之前检查错误。

注意:仅检查存在的数据是否足够,因为可能会出现其他错误。

4 个答案:

答案 0 :(得分:3)

考虑将您的查询包装在transaction

答案 1 :(得分:1)

您正在寻找的是交易。这样,您将所有语句发送到服务器,然后在类似于沙箱的内容中执行,服务器检查错误,然后(如果没有!)它保存数据。

这可以通过将语句包装在:

中在MySQL中完成
BEGIN;
YOUR QUERIES GO HERE
COMMIT;

有关更多详细信息,请查看this documentation。请注意,并非所有MySQL引擎都支持事务。

答案 2 :(得分:1)

您是否尝试过使用事务立即提交对数据库的所有更改?然后,如果其中任何一个失败,所有都将被回滚。

请参阅http://dev.mysql.com/doc/refman/5.5/en/commit.html

答案 3 :(得分:0)

您需要在此处使用事务,以便更安全地插入数据库。

DB TABLE:users having 3 fields u_id int , u_name varchar, u_email varchar

<?php
$dbh = mysqli_connect("localhost", "db_user", "password", "databse_name");
mysqli_autocommit($dbh, FALSE);

// run query 1
$query1 = "INSERT INTO users (u_name,u_email) VALUES('Abdus Samad1', 'abdul.samad1@...')";
$result = mysqli_query($dbh, $query1);
if ($result !== TRUE) {
    mysqli_rollback($dbh);  // if error, roll back transaction
}

// run query 2
$query2 = "INSERT INTO users (u_name,u_email) VALUES('Abdus Samad2', abdul.samad2@...)";
$result = mysqli_query($dbh, $query2);
if ($result !== TRUE) {
  mysqli_rollback($dbh); // if error, roll back transaction
  echo "Error found in one of queries";
}
else{
  echo "Success";
}

// assuming no errors, commit transaction
mysqli_commit($dbh);

// close connection
mysqli_close($dbh);
?>