【发布时间】:2020-08-16 14:14:03
【问题描述】:
下面是我写的代码,我试图在事务的帮助下将数据插入两个不同的表,但代码没有执行。非常努力地找出问题,但无法解决。
我收到此错误:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在 ''u_id_fk','device_type','ip_num','package','pkg_id_fk') VALUES('79','abc','128.1 附近使用正确的语法' 在第 1 行 []
$cust_name = 'multi';
$u_name = 'multi2';
$cnic_num = '421';
$address = 'sadaddd';
$password = md5('423423');
$cellnum='43243';
$p_id_fk=(int)'3';
try {
// First of all, let's begin a transaction
$conn->beginTransaction();
// If we arrive here, it means that no exception was thrown
// i.e. no query has failed, and we can commit the transaction
// Forgot to close the VALUES bracket and couldn't find your $email
$users_stmt=$conn->prepare("INSERT INTO users (`cust_name`, `u_name`, `cnic`, `address`, `password`, `email`) VALUES (:cust_name, :u_name, :cnic, :address, :password, :email)");
// PDO::execute() can accept an array of parameter bound to your query so you may avoid selecting data type when using bindParam()
$users_stmt->execute(["cust_name"=>$cust_name, "u_name"=>$u_name, "cnic"=>$cnic_num, "address"=>$address, "password"=>$password, "email"=>$email]);
// Not sure if $db is a PDO object...
$connections_stmt=$conn->prepare("INSERT INTO connections('u_id_fk','device_type','ip_num','package','pkg_id_fk') VALUES(:u_id_fk,:device_type,:ip_num,:package,:pkg_id_fk)");
$connections_stmt->execute(["u_id_fk"=>$u_id,"device_type"=>$device_type,"ip_num"=>$ip_num,"package"=>$package,"pkg_id_fk"=>$p_id_fk]);
$conn->commit();
} catch (Exception $e)
{
// An exception has been thrown
// We must rollback the transaction
$conn->rollback();
echo $e;
}
请帮忙解决!谢谢
【问题讨论】:
-
执行后有错误吗?
-
Catch 块没有显示任何错误,只是浏览器给出了 http 错误 500
-
您是否尝试过保存而不使用仅用于测试的事务?
-
您可以尝试使用
if来检查您的语句是否正确执行,$stmt- 成功时返回 TRUE,失败时返回 FALSE。检查这个:php.net/manual/en/pdostatement.execute.php -
你检查过服务器错误日志吗?
标签: php mysql sql mysqli transactions