ホームページ >バックエンド開発 >PHPチュートリアル >PDO の pdo に二重引用符に対する処理が行われているのですが、なぜこのステートメントが実行できるのでしょうか?
軽量のデータベースクラス medoo を見つけました。これは良い感じですが、使用中に非常に奇妙な問題を発見しました。
mysql を使用すると、彼が組み立てた SQL テーブル名とフィールド名はすべて二重引用符で囲まれて生成されます ステートメントを直接実行することはできません。
うわー
しかし、PDO を使用してステートメントを正常に実行すると、エラーは発生しません。これはなぜでしょうか? pdoはどのような処理を行ったのでしょうか?
これは不可能です!
実際のコードを投稿してください
medoo コードを読んだところです https://github.com/catfan/Medoo/blob/master/medoo.php
データベースに接続するときにステートメントが実行されることがわかりました
SET SQL_MODE= ANSI_QUOTES
このモードの機能は二重引用符を逆引用符に変更することであることがわかりました
mysql> SELECT * FROM "dd_xq_user_info" WHERE "uid" = '1' AND "status" = '1' ORDER BY "id" LIMIT 1;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"dd_xq_user_info" WHERE "uid" = '1' AND "status" = '1' ORDER BY "id" LIMIT 1' at line 1
SQL_MODE のデフォルト値は STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION です
ANSI_QUOTES に変更した後、他に操作がなければ当然影響はありません
これは PDO ではなく MySQL の関数です
これは関数ですPDO ではなく、MySQL です