Foydalanish misollari:
$name = dbget(1,"SELECT name FROM users WHERE id=%d",$_GET['id']); // если нам нужно только имя
$user = dbget(2,"SELECT * FROM users WHERE id=%d",$_GET['id']); // если нужна вся строка
$sql = "SELECT * FROM news WHERE title LIKE %s LIMIT %d,%d";
$news = dbget(3,$sql,"%$_GET[search]%",$start,$per_page); //если нужен массив
Ba'zi noqulayliklarga qaramay, bu funktsiya mening yuragim uchun qadrlidir, chunki u taniqli printsiplarga qat'iy rioya qilgan holda yozilgan: va agar buning uchun KISSni ayblash mumkin bo'lsa, unda undan foydalanish kodni juda va juda QURUQ qiladi.
Lekin hammamiz tushunamizki, bu boshi berk ko'chadir. Bizga esa to‘laqonli sinf kerak.Afsuski, maqolaning hajmi allaqachon barcha oqilona o‘lchamlardan oshib ketgan va sinf yaratish alohida postga ko‘chirilishi kerak. Men bu erda faqat bir nechta savollarga to'xtalaman.
Birinchidan, bizning sinfimiz yuqoridagi funktsiyaning merosxo'ri bo'ladi va kodlarni takrorlashdan xalos bo'lish uchun yuqori vazifani bajaradi. Shuning uchun, o'yinchilarni qo'llab-quvvatlashdan tashqari , sinf ma'lumotlar bazasidan kerakli formatda ma'lumot olish uchun yordamchi funktsiyalar to'plamini taqdim etadi - skaler, bir o'lchovli massiv, ikki o'lchovli massiv, maydon tomonidan indekslangan. ikki o'lchovli massiv maydoni tomonidan indekslangan bir o'lchovli massiv.
Ikkinchidan, sinfimiz uchun biz yozilgan to'ldiruvchilarning chinakam ajoyib g'oyasidan foydalanamiz . Va shu bilan birga, biz PDO dan nominal to'ldiruvchilar bilan foyda olamiz .
To'ldiruvchimiz o'xshash bo'lsin
[a-z]:[a-z]*
Masalan ,
i:
yoki
s:name
Birinchi holda, u anonim bo'ladi to'ldiruvchi , ikkinchisida esa u nomlanadi.
birinchi harf turini bildiradi, ikki nuqta qatorning boshqa elementlaridan to'ldiruvchini ajratib turadi va nom ixtiyoriy.
Uchinchidan, IN() operatori uchun uzoq kutilgan toʻldiruvchi (satrlar uchun)
function createIN($data)
{
if (!is_array($data))
{
throw new E_DB_MySQL_parser("Value for a: type placeholder should be array.");
}
if (!$data)
{
throw new E_DB_MySQL_parser("Empty array for a: type placeholder.");
}
$query = $comma = '';
foreach ($data as $key => $value)
{
$query .= $comma.$this->escapeString($value);
$comma = ",";
}
return $query;
}
va unga bir nechta eslatmalar. Ko'rib turganingizdek, tahlilchi bo'sh massivga istisno qo'yadi. Nega?
Chunki MySQL bo'sh IN() ga qasam ichadi va baribir so'rovni bajarish foydasiz. Qaerdadir men chetlari atrofida qo'shtirnoq va qo'shtirnoq bo'lgan aqlli variantni ko'rdim , lekin buni qilolmaysiz: bo'sh satr juda adolatli qiymatdir, lekin agar u massivda aniq uzatilgan bo'lsa, uni izlash mantiqiy.
Update:
Bo'sh massiv bilan bog'liq muammoni hal qilish juda oson ekanligi ma'lum bo'ldi!
IN(NULL)
xatoga yo'l qo'ymaydi va har doim FALSE ni qaytaradi - bo'sh massiv uchun ideal ko'rinish.
Ya'ni, uning o'rniga, faqat NULLni almashtirishingiz kerak:
Do'stlaringiz bilan baham: |