|
Shuningdek, O’zbekiston Prezidenti 7-fevral kungi farmoni bilan 2017
|
bet | 15/24 | Sana | 20.05.2024 | Hajmi | 67,89 Kb. | | #246484 |
Bog'liq Shuningdek, O’zbekiston Prezidenti 7-fevral kungi farmoni bilan -hozir.orgfunction query(){
$query = array_shift($args);
$query = str_replace("%s","'%s'",$query);
foreach ($args as $key => $val) {
$args[$key] = mysql_real_escape_string($val);
}
$query = vsprintf($query, $args);
if (!$query) return FALSE;
$res = mysql_query($query) or trigger_error("db: ".mysql_error()." in ".$query);
return $res;
}
Bu so'rovga ma'lumotlarni almashtirishda yaxshi ish qiladi. Va noaniqlik bilan: agar biz to'ldiruvchini aralashtirib , LIMIT operatoridagi %d o'rniga, masalan, %s ni qo'ysak, ishlab chiqish bosqichida so'rov xatosi paydo bo'ladi, lekin in'ektsiya emas ( qochib ketganda sodir bo'ladi ).
Albatta, printf () ga asoslangan amalga oshirish kamchiliklardan xoli emas - siz so'rovda to'g'ridan-to'g'ri yozilgan yoqtirishlar yo'qligiga ishonch hosil qilishingiz kerak , bundan tashqari faqat uchta to'ldiruvchi .
Ammo OOP ni chindan ham yoqtirmaydiganlar uchun bu erda men ko'p yillar oldin yozgan va siz shunchaki konfiguratsiya fayliga nusxa ko'chirishingiz va undan foydalanishni boshlashingiz mumkin bo'lgan, so'rovlarni bajarishning xavfsiz usuli va buning ustiga. , shuningdek, ma'lumotlarni olish kodini 3-4 marta qisqartiradi.
function dbget() {
/*
usage: dbget($mode, $query, $param1, $param2,...);
$mode - "dimension" of result:
0 - resource
1 - scalar
2 - row
3 - array of rows
*/
$args = func_get_args();
if (count($args) < 2) {
trigger_error("dbget: too few arguments");
return false;
}
$mode = array_shift($args);
$query = array_shift($args);
$query = str_replace("%s","'%s'",$query);
foreach ($args as $key => $val) {
$args[$key] = mysql_real_escape_string($val);
}
$query = vsprintf($query, $args);
if (!$query) return false;
$res = mysql_query($query);
|
| |