2016-09-29 4 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がこの人為的な例では不要だが、なぜうまくいかないのか?

ありがとうございました。 PDOで

+1

BEGINとENDキーワードは私の*で使用していますか?SQL関数ではなく、クエリで..... –

答えて

1

、他のAPIには、はあなたが別のAPI呼び出しを使用して、別のクエリを実行するように:

ENDキーワードは意味をなさない。しかし、あなたがCOMMIT意味

​​

を想定して考えると、あなたは、単一のクエリのトランザクションを実行するにはポイントが

  • がないことを念頭に置いて維持する必要があります
  • あなたはそれにはデータをバインドしていない場合は、準備されたステートメントを使用してもポイントがない
+0

単一のクエリポイントをする必要があります'autocommit = 1'を持っています。 –

関連する問題