2011-10-27 9 views
5

5年前(!本当に)WEZファーロングはPDOのリード開発者がいたと、彼はこれを書いた:MySQLで実際に準備されたステートメントをPDOで使用することはできますか?

私は PDO :: MYSQLで作業するときに、現在のPHPで、利用できる次の属性を使用することをお勧めします5.1.3リリース候補と スナップショット:

$ db-> setAttribute(PDO :: ATTR_EMULATE_PREPARES、true);

これにより、mysqlクライアント内の ネイティブプリペアドステートメントAPIの代わりにPDOネイティブクエリパーサが使用され、実際には がこれらの問題を排除します。問題は、PDOは(少なくとも私はそれがあると仮定)Mysqlndを使用していることを今改善されている場合

理由はしかしhttp://wezfurlong.org/blog/2006/apr/using-pdo-mysql/

で与えられ、彼は答えることができませんでした。

誰でも知っていますか?

答えて

6

はい、ATTR_EMULATE_PREPARESfalse(または0)に設定すると、実際の準備文が使用されます。

並べ替えそれはまだすべてのフォールバックロジックを持っています。したがって、サーバからの準備が失敗した場合、mysqli :: prepareは失敗しますが、PDOは準備をエミュレートすることに戻りません。この理由は、PDOが、準備をサポートしていないMySQLのバージョンや準備をサポートしていないステートメント(ALTERなど)に対して、準備済みのステートメントを使用できるようにするためです。

これは、MySQLがあなたにお任せします(ATTR_EMULATE_PREPARESがfalseの場合のみ)...

関連する問題