私は自分のクエリビルダを作成して、次の問題を解決しました。 、両方の私は、MySQLのワークベンチとphpMyAdminには、このまったく同じSQL文を試してみたSQLSTATE [HY000]:一般的なエラー:1の近くに "。":UPDATE文の構文エラー
PHP Fatal error: Uncaught PDOException:
SQLSTATE[HY000]: General error: 1 near ".": syntax error in ....
:
UPDATE `users` SET `users`.`name` = :usersName WHERE `id` = :id;
は、私は次のエラーが表示されます。次のクエリでPDO
オブジェクトにprepare()
メソッドを呼び出すときエラーや警告は返されません。
私がテーブル名の接頭辞を付ける理由は、後でSQL JOIN
を追加するためです。
表の接頭辞がないと、完全に機能します。それがなければ、それは次のようになります。
UPDATE `users` SET `name` = :usersName WHERE `id` = :id;
私のPHPファイルには、次のようになります。
<?php
$statement = "UPDATE `users` SET `users`.`name` = :usersName WHERE `id` = :id;";
$PDO = new PDO('sqlite::memory:');
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$PDO->exec("CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50))");
$PDO->exec("INSERT INTO `users` (id, name) VALUES (1, 'Bas')");
$PDO->exec("INSERT INTO `users` (id, name) VALUES (2, 'Basert')");
$statement = $PDO->prepare($statement);
エラーがその行の後に発生します。
なぜこの構文エラーが発生し、テーブルプレフィックスを削除せずに修正できますか?
このクエリはどのように実行されていますか?それが問題の原因かもしれません。また、PDOを使用している場合は、クエリの最後に ';'を付ける必要はありません。 – tadman
tablename接頭辞が 'set'の中にあるのは標準SQLではありません – Rahul
@tadman私は、あとでパラメータを追加する準備をしているだけで、すでに例外を与えたその関数に対してです。 – Bas