cari

Rumah  >  Soal Jawab  >  teks badan

php - Overhed persediaan vs sql?

Adakah kos penggunaan menyediakan dan membuat pertanyaan sama untuk pernyataan pertanyaan SQL yang sama?
$sql = $pdo -> prepare("pilih * dari jadual");
$sql -> laksanakan();
$rs = $sql ->

$sql = $pdo -> query("select * from table");

$rs = $go -> fetch(PDO :: FETCH_ASSOC);
Sebagai contoh, adakah persediaan dan pertanyaan pertanyaan di atas sama cekap? (Abaikan suntikan pernyataan SQL).

Single Yang manakah lebih baik digunakan untuk hasil pertanyaan? Adakah menyediakan menghantar pangkalan data sekurang-kurangnya dua kali ke pangkalan data apabila membuat pertanyaan?

Adakah penyediaan PDO hanya sesuai untuk pilihan? Bagaimana pula dengan dua lagi operasi kemas kini dan masukkan ke dalam? Menggunakan ruang letak dalam penyediaan boleh menghalang suntikan dengan berkesan, tetapi bila? ="abc./-+#$%`123" Simbol-simbol khas ini (melainkan ia terlepas), ralat dilaporkan semasa melaksanakan penyataan Adakah exec lebih sesuai untuk kemas kini dan dimasukkan ke dalam?

我想大声告诉你我想大声告诉你2729 hari yang lalu771

membalas semua(1)saya akan balas

  • 阿神

    阿神2017-06-05 11:09:31

    1.PDO::query melaksanakan pernyataan SQL dan, jika diluluskan, mengembalikan objek PDOStatement. Fungsi PDO::query mempunyai "perkara yang sangat baik", iaitu, ia boleh terus melintasi set rekod yang dikembalikan.
    2.PDO::exec melaksanakan pernyataan SQL dan mengembalikan bilangan baris yang terjejas. Fungsi ini tidak mengembalikan koleksi hasil. Syor rasmi:
    Untuk pernyataan SELECT yang hanya perlu dikeluarkan sekali dalam program, pertimbangkan untuk menggunakan PDO::query().
    Untuk kenyataan yang perlu dikeluarkan beberapa kali, anda boleh menggunakan PDO::prepare() untuk menyediakan objek PDOStatement dan gunakan PDOStatement::execute() untuk mengeluarkan kenyataan.
    PDO::exec menyokong pelaksanaan semua pernyataan SQL seperti SELECT/DELETE/UPDATE/INSERT, jadi ia lebih berkuasa daripada fungsi PDO query(). Oleh kerana hanya fungsi yang terjejas dikembalikan, jika anda melaksanakan SELECT, anda tidak boleh mendapatkan objek PDOStatement, jadi anda tidak boleh melintasi set hasil Anda hanya boleh menggunakan pertanyaan atau melaksanakan fungsi mengikut cadangan rasmi. .
    3 Prinsip penyediaan adalah ini Pernyataan sql dihantar ke pelayan sql untuk dikompilasi terlebih dahulu, dan kemudian ia sebenarnya dilaksanakan apabila eksekusi dilaksanakan. Compile sekali, laksanakan berkali-kali. Jika hanya terdapat satu pertanyaan, kecekapan penyediaan dan pertanyaan pada asasnya adalah sama. Jika dilaksanakan beberapa kali, kecekapan penyediaan akan didedahkan. Selain itu, tidak semua suntikan SQL boleh dihalang, seperti di mana dalam (" ").

    balas
    0
  • Batalbalas