lastInsertId () oxirgi kiritilgan ma'lumotlar bazasi qatorining identifikatorini qaytaradi.
// lastInsertId () usuli $ db-\u003e so'rovning oxirgi yozuvining identifikatorini qaytaradi ("INSERT INTO foydalanuvchilari SET nomi \u003d" Vasya ", manzil \u003d" Bu erda ", elektron pochta \u003d" vasya@test.com ""); $ insertId \u003d $ db-\u003e lastInsertId ();
Tayyorlangan iboralar - tayyorlangan statistikalar.
Uchinchi usul - tayyorlash + ijro etish - Tayyorlangan iboralarular tayyor ko'rsatmalar, ular mavjud bo'lgan joy egalari tayyorlangan statistikalaryoki o'zgaruvchilarni bog'lash, ifoda bir marta aniqlashga imkon beradi va keyin uni turli parametrlar bilan bir necha bor bajaradi. Shuningdek, ular o'zgaruvchini so'rovdan ajratib olishga imkon beradi, bu esa kodni xavfsizroq qiladi va bajarilish tezligini oshiradi. Kodingizda, endi siz uzatilgan ma'lumotlarni tozalashga harakat qilishingiz shart bo'lmaydi. Ma'lumotlar bazasi so'rovini bajarishdan oldin biz buni faqat bir marta qilamiz. Buning uchun funktsiyadan foydalaning Tayyorlang (); SQL so'rovini parametr sifatida qabul qiladi, ammo o'zgaruvchilar o'rniga teglar '?' Yoki '' 1 'raqamlari yoki yoki nuqta': 'bilan boshlanadigan o'zgaruvchi shaklida belgilanadi. Agar siz savol belgilariga (: raqamlarga) joylashtirsangiz, unda tegishli ketma-ketlikda bajaruvchi funktsiyaga bir qator qiymatlarni berishingiz kerak. Agar sizning tanlovingiz o'zgaruvchilar deb nomlangan bo'lsa, unda siz har bir o'zgaruvchini ikkita funktsiyadan bittasi bilan belgilashingiz kerak: yoki psevdo-o'zgaruvchiga qiymatni tayinlaydigan bindValue () yoki haqiqiy o'zgaruvchiga bindParam (). Uchinchi parametr o'zgaruvchini turini ko'rsatishi mumkin, masalan $ db-\u003e bindParam (': id', $ id, PDO :: PARAM_INT).
// Nomsiz yorliqlarni sinab ko'ring ($ stmt \u003d $ db-\u003e tayyorgarlik ("INSERT INTO sinovi (yorliq, rang) VALUES (?,?)"); $ Stmt -\u003e bajarish (qator ("mukammal", "yashil")) );) catch (PDOException $ e) (echo "Xato:". $ e-\u003e getMessage (); exit ();) // stmt bu "davlat tavsiflovchi" // Teglar nomi $ stmt \u003d $ db-\u003e tayyorlang ("INSERT INTO sinovi (yorliq, rang) VALUES (: label,: color)"); $ stmt -\u003e bajaring (qator ("label" \u003d\u003e "mukammal", "color" \u003d\u003e "yashil")); // yana bir variant $ stmt \u003d $ db-\u003e Tayyorgarlik ("INSERT INTO foydalanuvchilari (ism, familiya, elektron pochta)" VALUES (: ismi,: familiyasi,: elektron pochta) "); $ stmt-\u003e bindParam (": familiya", $ ism); $ stmt-\u003e bindParam (": familiya", $ familiya); $ stmt-\u003e bindParam (": elektron pochta", $ elektron pochta); $ firstname \u003d "Jon"; $ lastname \u003d "Smit"; $ email \u003d "john@test.com"; $ stmt-\u003e bajaring ();
Sizga yana bir bor eslatib o'tamanki, agar siz tayyor iboralarni ishlatmasangiz, lekin uzatilgan ma'lumotlarni himoya qilishni xohlasangiz, buni PDO: quote funktsiyasi yordamida amalga oshirish mumkin.
PDO SELECT ma'lumotlari
Ma'lumot olish uchun fetch () yoki fetchAll () usullari qo'llaniladi. Funktsiyani chaqirishdan oldin siz PDO-ga ma'lumotlar bazasidan ma'lumotlarni qanday olishingizni aytishingiz kerak. PDO :: FETCH_ASSOC satrlarni tugmachalar sifatida maydon nomlari bilan assotsiativ qator sifatida qaytaradi. PDO :: FETCH_NUM satrlarni raqamli qator sifatida qaytaradi. Odatiy bo'lib, yuklash PDO :: FETCH_BOTH yordamida amalga oshiriladi, bu ma'lumotni raqamli va assotsiativ kalitlar bilan takrorlaydi, shuning uchun takroriy massivlarning oldini olish uchun bitta usulni tanlash tavsiya etiladi:
$ stmt \u003d $ db-\u003e so'rov ("SELECT * foydalanuvchilardan"); // yuklash rejimini o'rnatish $ stmt-\u003e setFetchMode (PDO :: FETCH_ASSOC); while ($ row \u003d $ stmt-\u003e olish ()) (echo "
". $ string [" firstname "]." ". $ string [" familiya "]."
"; echo"
". $ string [" email "]."
"; }
Yoki siz olish usulini ushbu usulning o'zida ko'rsatishingiz mumkin -\u003e fetch ()
$ stmt \u003d $ db-\u003e so'rov ("SELECT * FROM jadval"); while ($ row \u003d $ stmt-\u003e olish (PDO :: FETCH_ASSOC)) ($ string ["field1"]. "". $ string ["field2"]; // va hokazo ...) // Diqqat, LIKE bilan ishlamaydigan misol! $ stmt \u003d $ db-\u003e tayyorgarlik ("%%%% maydon qayerda" jadvalidan TANLANISh maydoni "); $ stmt-\u003e bindParam (1, $ qidiruv, PDO :: PARAM_STR); $ stmt-\u003e bajaring (); // Buning keragi bor: $ stmt \u003d $ db-\u003e tayyorgarlik ("Jadvalni KO'RIShGA SO'RA OLGAN maydoncha KERAK?"); $ stmt-\u003e bindValue (1, "% $ qidirish%", PDO :: PARAM_STR); $ stmt-\u003e bajaring (); // yana bir misol $ stmt \u003d $ db-\u003e Tayyorgarlik ("SELECT * FROM jadval qayerda id \u003d? Va nomi \u003d?"); $ stmt-\u003e bindValue (1, $ id, PDO :: PARAM_INT); $ stmt-\u003e bindValue (2, $ nomi, PDO :: PARAM_STR); $ stmt-\u003e bajaring (); $ qatorlar \u003d $ stmt-\u003e fetchAll (PDO :: FETCH_ASSOC); // yana bir variant $ stmt \u003d $ db-\u003e Tayyorgarlik ("SELECT * foydalanuvchilardan"); $ stmt -\u003e bajaring (); while ($ row \u003d $ stmt-\u003e olish ()) (print_r ($ qator);)
PDO UPDATE ma'lumotlari
Bu aslida INSERT va SELECT bilan bir xil bo'ladi (bu holda biz yana nomlangan to'ldiruvchilardan foydalanamiz):
$ stmt \u003d $ db-\u003e tayyorgarlik ("UPDATE foydalanuvchilari elektron pochta manzilini belgilash \u003d: elektron pochta manziliga familiya \u003d: familiya"); $ stmt-\u003e bindParam (": familiya", $ familiya); $ stmt-\u003e bindParam (": elektron pochta", $ elektron pochta); $ lastname \u003d "Smit"; $ email \u003d "newmail@test.com"; $ stmt-\u003e bajaring ();
Do'stlaringiz bilan baham: |