【问题标题】:SQL syntax error (with procedural insert)SQL 语法错误(带有过程插入)
【发布时间】:2018-09-20 23:57:23
【问题描述】:

我需要为不同的表执行两个查询。我已经测试过代码打击:

$insert= $mysqli->query("BEGIN;INSERT INTO 
patient(patient_firstName,patient_familyName,patient_age,patient_emailAddress, patient_physicalAddress, 
patient_mobile,date_of_register,uusernamee,ppasswordd) 
values('1','1','1','1','1','1','1','1','1');insert into 
patient_requests(patient_id,subject,description)values('222','22222','22222'); Commit; ") ;

这是它显示的错误:

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近'插入病人(病人名字,病人家庭名字, 患者年龄,患者_'在第 1() 行

我哪里错了?

提前谢谢..!

【问题讨论】:

  • $mysqli->query 一次只接受一个查询。而BEGIN; 就是其中之一。这就是为什么错误指出接下来会发生什么:INSERT INTO ...
  • @juergend 谢谢,你能提出mysqli的替代方案吗?或者代码更正?
  • 将您的 query 更改为 multi_query 或手动将其拆分为多个查询。
  • 拆分成三个查询:1.) BEGIN; 2.) INSERT INTO ... values( .... ); 3.) COMMIT;
  • @ChibuezeOpata 感谢您的回答。恐怕我不能,因为我在私人功能中使用它! (这可能是个问题吗?因为在私有函数中使用多个查询时我会遇到错误)

标签: php sql mysqli


【解决方案1】:

如果你想在单个DB事务中执行多个INSERT,你可以这样尝试:

// begin DB transaction
$mysqli->begin_transaction(MYSQLI_TRANS_START_READ_ONLY);

// multiple inserts queries
$mysqli->query("INSERT INTO ....");
$mysqli->query("INSERT INTO ....");

$mysqli->commit();

【讨论】:

    猜你喜欢
    • 2014-05-25
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多