function escapeString($value)
{
return "'".mysqli_real_escape_string($this->connect,$value)."'";
}
mysqli_set_charset / mysql_set_charset funktsiyalari va PDO-da - DSN-da
"kodlashni to'g'ri o'rnatish" mumkinligini qo'shish uchun qoladi .
Raqamni formatlash
Nazariy jihatdan, ko'p hollarda raqamlar satrlar sifatida formatlanishi mumkin, keyin esa muammo avvalgisiga qisqartiriladi. Ammo uchta muammo bor
MySQL da STRICT MODE, u yoqilganda, ba'zi hollarda qatorni raqam sifatida o'tkazishda xatoliklarni keltirib chiqaradi.
LIMIT iborasi, u satrlardan umuman foydalanmaydi
MySQL mutaxassislarining fikricha , literal turi juda muhim va so'rovni rejalashtirish va bajarishda rol o'ynaydi. Men o'zim bu borada kuchli emasman va batafsil sharhdan xursand bo'laman.
Umuman olganda, biz raqamlarni ham formatlaymiz. Bundan tashqari, to'ldiruvchilarning yordami bilan bu muammo emas.
Yana bir muammo - PHP-da o'rnatilgan turdagi konversiya mexanizmlarining bit chuqurligi etarli emas . Shunday qilib, agar siz PHP_INT_MAX dan katta butun son qiymatlari bilan ishlashingiz kerak bo'lsa, tekshirish uchun oddiy iboralardan foydalaning . Xo'sh, odatiy holatda siz intval () dan foydalanishingiz mumkin. O'nli kasrli raqamlarni faqat
oddiy ibora bilan tekshirish tavsiya etiladi , chunki PHPda MySQL -dagi o'ta foydali DECIMAL turiga o'xshash ma'lumotlar turi mavjud emas .
"dangasa to'ldiruvchilar "
Shunday qilib, keling, amalga oshirishga o'tamiz.
Aqlga keladigan birinchi variant - sprintf (). Haqiqatan ham, ushbu funktsiyalar oilasining o'rnini bosuvchi ifodalar haqiqiy to'ldiruvchilardir . Bundan tashqari , yozildi joy egalari ! Ya'ni, ma'lumotlarning qanday aniq ishlov berilishi to'ldiruvchining o'zi tomonidan belgilanadi . Bu, aslida, unchalik ahamiyatsiz narsa emas - na PDO mualliflari, na mysqli mualliflari bu haqda hech qachon o'ylamagan. Va siz ushbu kutubxonalarda almashtiriladigan ma'lumotlar turini faqat maxsus funktsiyani chaqirish orqali belgilashingiz mumkin.
Umuman olganda, sprintf satrlardan tashqari har qanday ma'lumotlar turlariga g'amxo'rlik qiladi. Albatta, sprintf hech qanday tarzda satrlarni formatlamaydi, lekin ularni qanday bo'lsa, shunday qilib chiqaradi. Ammo bu bizga mos kelmaydi - bizda qattiq formatlash qoidalari mavjud. Va bu aniq qoida , lekin qoida emas. Biz eslaganimizdek, qochish - bu urushning yarmi .
Ammo biz dasturchiga tirnoq qo'shish kabi mas'uliyatli ishni tark eta olmasligimiz sababli, bizning kodimiz buni o'zi bajarishi kerak. Aqlsiz ipni almashtirish. Bu ideal emas, lekin o'quv kodi uchun yaxshi.
Bundan tashqari, biz qochib ketamiz funksiyaga uzatiladigan barcha ma'lumotlar. Ha, bu noto'g'ri. Ammo bundan hech qanday zarar bo'lmaydi, lekin biz sprintf () ning asosiy afzalligini saqlab qolamiz - bu biz uchun chiziqni tahlil qiladi. Nega og'rimaydi? Axir, torlardan boshqa narsadan qochish befoyda va xavfli ekanligini aytdim-ku! Ha, agar biz qolgan ma'lumotlarni hech qanday tarzda qayta ishlamasak. Ammo qolgan to'ldiruvchi variantlari faqat raqamli bo'lgani uchun, in'ektsiya ular orqali o'tmaydi.
Natijada bizda funktsiya mavjud
Do'stlaringiz bilan baham: |