我想向DB写几个查询以保存5个用户。但在保存之前我必须确定错误。例如,我插入了第一个用户,没有错误。但在尝试保存第二个之后,出现了错误(注意:不仅重复错误)。之后,我必须取消我保存的所有数据,并从数据库中删除第一个。这是一个坏主意,更好地检查错误SOMEHOW,并保存所有3个用户...
问题:如何在插入数据之前检查错误。
注意:仅检查存在的数据是否足够,因为可能会出现其他错误。
答案 0 :(得分:3)
考虑将您的查询包装在transaction。
中答案 1 :(得分:1)
您正在寻找的是交易。这样,您将所有语句发送到服务器,然后在类似于沙箱的内容中执行,服务器检查错误,然后(如果没有!)它保存数据。
这可以通过将语句包装在:
中在MySQL中完成BEGIN;
YOUR QUERIES GO HERE
COMMIT;
有关更多详细信息,请查看this documentation。请注意,并非所有MySQL引擎都支持事务。
答案 2 :(得分:1)
您是否尝试过使用事务立即提交对数据库的所有更改?然后,如果其中任何一个失败,所有都将被回滚。
答案 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);
?>