Rumah >pembangunan bahagian belakang >tutorial php >PDO::ATTR_EMULATE_PREPARES dalam MySQL: Untuk Meniru atau Tidak Meniru?
PDO::ATTR_EMULATE_PREPARES ialah atribut MySQL kritikal yang mempengaruhi prestasi dan keselamatan. Memahami nuansanya adalah penting untuk membuat keputusan termaklum.
Pernah dipercayai bahawa mendayakan emulasi meningkatkan prestasi disebabkan kenyataan disediakan asli MySQL yang memintas cache pertanyaan. Walau bagaimanapun, MySQL 5.1.17 (dan versi yang lebih baru) membenarkan pernyataan yang disediakan untuk memanfaatkan cache pertanyaan, dengan berkesan menghapuskan perbezaan prestasi ini.
Persediaan asli tidak memberikan faedah keselamatan tambahan berbanding dengan emulasi. Kedua-dua kaedah secara berkesan melarikan diri daripada parameter pertanyaan, memastikan perlindungan terhadap kerentanan suntikan SQL.
Melumpuhkan emulasi boleh mencetuskan ralat sintaks pada masa penyediaan, manakala emulasi memaklumkan pengguna semasa pelaksanaan. Perbezaan ini boleh memberi kesan kepada proses pengendalian dan penyahpepijatan.
Terdapat sedikit overhed prestasi yang dikaitkan dengan penyediaan asli disebabkan kos penyediaan tetapnya. Jika objek pernyataan yang disediakan tidak digunakan semula, emulasi mungkin terbukti lebih cekap.
Berdasarkan versi MySQL dan PHP terkini yang anda sebutkan, adalah dinasihatkan untuk melumpuhkan PDO ::ATTR_EMULATE_PERSEDIAAN. Ini akan memastikan pelaporan ralat optimum dan memanfaatkan faedah cache pertanyaan apabila boleh.
Untuk menyelaraskan persediaan anda, pertimbangkan untuk menggunakan fungsi sambungan seperti yang disediakan di bawah, yang menetapkan atribut yang disyorkan:
function connect_PDO($settings) { $dbh = new PDO($dsn, $settings['user'], $settings['pass'], $options); $serverversion = $dbh->getAttribute(PDO::ATTR_SERVER_VERSION); $emulate_prepares = (version_compare($serverversion, '5.1.17', '<')); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, $emulate_prepares); return $dbh; }
Atas ialah kandungan terperinci PDO::ATTR_EMULATE_PREPARES dalam MySQL: Untuk Meniru atau Tidak Meniru?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!