prosource

포맷 방법 BEGIN...SQL과 함께 PDO를 사용하는 END 문?

probook 2023. 10. 20. 13:49
반응형

포맷 방법 BEGIN...SQL과 함께 PDO를 사용하는 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`)

저는 그 시작이...이 작위적인 예에서는 END가 불필요하지만 왜 작동하지 않습니까?

어떤 도움이라도 주셔서 대단히 감사합니다.

PDO에서는 다른 API와 마찬가지로 별도의 API 호출을 사용하여 별도의 쿼리를 실행합니다.

END 키워드가 말이 안되고 커밋을 의미한다고 가정한다면,

$conn->query("BEGIN");
$conn->query("INSERT INTO person (`name`, `age`) VALUES ('John', 34)");
$conn->query("COMMIT");

하지만, 당신은 기억해야 합니다.

  • 단일 쿼리에 대해 트랜잭션을 실행하는 것은 의미가 없습니다.
  • 준비된 문장에 데이터를 바인딩하지 않으면 사용할 의미가 없습니다.

언급URL : https://stackoverflow.com/questions/39772864/how-do-you-format-begin-end-statements-using-pdos-with-sql

반응형