2016-09-29 47 views
1

这工作得很好:你如何使用PDO的SQL来格式化BEGIN ... END语句?

... 
$sql = "INSERT INTO person (`name`, `age`) 
     VALUES ('John', 34);"; 
$stmt = $conn->prepare($sql); 
... 

但是,这给出了一个错误:

... 
$sql = "BEGIN 
      INSERT INTO person (`name`, `age`) 
      VALUES ('John', 34); 
     END;"; 
$stmt = $conn->prepare($sql); 
... 

的错误是:

SyntaxError: unterminated string literal 

更具体地说:

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO person (`name`, `age`) 

我知道在这个人为的例子中BEGIN ... END是不必要的,但为什么它不起作用?

非常感谢您的帮助。

+1

BEGIN和END关键字用我*?SQL函数不查询..... –

回答

1

在PDO,就像任何其他的API,您使用单独的API调用运行单独的查询:

鉴于END关键字是没有意义的,并假设你的意思是COMMIT,

​​

然而,您必须记住,

  • 有没有点为单个查询运行交易
  • 存在使用事先准备好的声明没有任何意义,如果你没有数据绑定到它
+0

单查询点需要有'autocommit = 1'。 –