PHP orqali MySQL ma'lumotlar bazasiga rasm qo'shish. MySQL ma'lumotlar bazasiga qanday yozish, PHP kodini nusxalash MySQL-ga PHP orqali qo'shish

Oxirgi yangilangan: 1.11.2015

Bularni o'rinli qo'shish uchun "INSERT" viraz ishlatiladi:

$query ="QİYMATLARGA INSERT INSERT INTO VALUES(NULL, "Samsung Galaxy III", "Samsumg")";

Viraz "INSERT" jadvalga bir qatorni qo'shadi. INTO kalit so'zidan keyin jadval nomi ko'rsatiladi va VALUES kalit so'zidan keyin yoylarda barcha ustunlar uchun qiymatlar ko'rsatiladi. Jadvalda uchta ustun borligi sababli, biz uchta qiymatni ko'rsatishimiz mumkin.

Shunday qilib, oxirgi mavzularda bo'lgani kabi, jadvallarni yig'ishda ular keyingi ustunlar sonini ko'rsatdilar: id, nom, kompaniya, keyin bu holda id ustuni uchun NULL qiymati, nom uchun "Samsung Galaxy III", va kompaniya uchun "Samsumg".

Agar identifikator ustuni AUTO_INCREMENT ga o'rnatilgan bo'lsa, biz yangisi uchun yangi raqamli qiymatni belgilashimiz shart emas va biz NULL qiymatini o'tkazishimiz mumkin va MySQL keyingi mavjud qiymatni berishi mumkin.

Endi dumbadan ma'lumotlar qo'shilishini ko'rib chiqaylik. Keling, fayl yarataylik create.php kelishi bilan:

Maʼlumotlar qoʻshildi"; ) // ulanishni yopish mysqli_close($link); ) ?>

Yangi model qo'shing

Modelni kiriting:

Virobnik:

Bu erda kod shakllarning funksionalligi bilan birlashmalarning ma'lumotlar bazasi bilan o'zaro bog'liqdir: qo'shimcha shakllar uchun ma'lumotlar bazasiga qo'shish uchun ma'lumotlar kiritiladi.

MySQL xavfsizligi

Bu erda biz mysqli_real_escape_string() funksiyasini aylantirdik. U ketma-ket belgilar uchun ekran bo'lib xizmat qiladi, keyin esa SQL boshida g'alaba qozonadi. Parametrlar o'sha qatordagi ulanish ob'ektini qanday qabul qiladi, bu esa ko'rib chiqilishi kerak.

Shunday qilib, biz ikkita belgilardan qochishni to'xtatamiz: birinchi navbatda mysqli_real_escape_string() yordamchi funksiyasi orqasidagi sql-virus uchun, so'ngra htmlentities() yordamchi funksiyasi ortidagi html uchun. Tse bizga ikki turdagi hujumlardan himoya qilish imkonini beradi: XSS hujumlari va SQL in'ektsiyasi.

Siz u bilan yordamchingiz bilan tanishasiz, ma'lumotlar bazasini o'zingizdan qanday boshlash kerak PHP skript. Ko'ryapsizmi MySQL jadvaliga yozuv qo'shish, vikorist php kodi. Avvalo, bizning boshqa yordamchilarimizni ko'rib chiqing, PHP va ma'lumotlar bazalari bilan ishlashning asosiy bosqichlarini qanday ochish kerak - PHP dan MySQL ma'lumotlar bazasiga ulanish (ingliz tili).

Kobdan oldin, hujumning mavjudligini teskari aylantiring:

  • Xosting boshqaruv paneliga kirish

Krok 1 - Jadval yaratish

Nasampered, biz sizning ma'lumotlaringiz uchun jadval yaratishimiz kerak. Jarayon yanada sodda, yaku siz ishlashingiz mumkin phpMyAdmin hosting ostidagi panelingizdan. Biz MySQL ma'lumotlar bazalarini oldingi yordamchi bilan yaratish jarayonini allaqachon tasvirlab berdik, shuning uchun biz bu lahzani bu erda o'tkazib yuboramiz.

PhpMyAdmin tomoniga kirganingizdan so'ng siz shunga o'xshash rasmni ko'rasiz:

Nomi ostida jadval tuzamiz Talabalar bizning ma'lumotlar bazasi uchun u266072517_name. Tugma yordamida yangi jadval yaratishingiz mumkin Jadval yaratish. Agar siz yangi tomonni qo'shsangiz, jadvalingiz uchun barcha kerakli ma'lumotlarni kiritishingiz mumkin:

Jadvallarni yaratishning eng oddiy usuli, jadvallar/ma'lumotlar bazasi tuzilishi haqida qo'shimcha ma'lumotni olib tashlash uchun siz teri maydonini sozlashingiz, phpMyAdmin (ingliz tili) rasmiy hujjatlariga qaytishingiz mumkin.

Biz bu erda dalalarning bir nechta oddiy tushuntirishlarini kiritamiz, shunda biz vikoristovuvat qilamiz:

  • Ism- maydon nomi. Jadvalingizning yuqori qismida ko'rsatiladi.
  • turi– bu yerda siz maydon turini belgilashingiz mumkin. Masalan, biz tanlaymiz varchar, buning uchun bu erda ismlar qatorini kiritish kerak (raqamlar emas, ê harflari bo'lganlar uchun).
  • Uzunlik/qiymatlar- ushbu sohada rekordning maksimal davomiyligini tayinlash uchun g'alaba.
  • Indeks- biz "ID" maydoni uchun "Birlamchi" indeksni tanladik. Jadvallarni yig'ishda onaga bitta ID maydoni tavsiya etiladi. vzaimosv'yazku bir-biriga bog'langan jadvallar bo'lsa, jadvallarda índexatsíí zapisíї uchun vikoristovuêtsya qo'lga kiritdi. Bu erda siz ham ko'rishingiz mumkin "A_I" bu nima degani Avtomatik o'sish. Ushbu sozlama indeksni avtomatik ravishda oshiradi (1,2,3,4…).

bosing Saqlash va sizning jadvalingiz yaratiladi.

Krok 2 - PHP kodini yaratish va MySQL jadvaliga yozuv qo'shish

Variant 1 - MySQLi usuli

Nasampered, ma'lumotlar bazasi bilan ma'lumotlar bazasini o'rnatish kerak, bizning oldinga yordamchimiz bilan sgídno. Agar MySQL jadvaliga yozuv qo'shish so'rovi bilan SQL-dan davom eta olsak - KIRITMOQ. Mana ulanish usuli va kiritish usuli bilan kodning so'nggi namunasi:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

Ushbu darajadagi kodning birinchi qismi (qatorlar 3 – 18 ) ma'lumotlar bazasiga havolani o'rnatishning bir qismiga qadar ko'rish mumkin. Biz yana bu qismdan o'tmaymiz, agar siz teri qatori nimani anglatishini bilmoqchi bo'lsangiz, daniyaliklar bazasiga ulanish kabi old ker_vnitstva-ga murojaat qiling (inglizcha).

Qani boshladik 19 :

$sql = "INSERT INTO Talabalar (ism, familiya, email) VALUES ("Thom", "Flakon", " [elektron pochta himoyalangan]")";

Kodning eng muhim qatori, mo'ylovni o'g'irlashning hojati yo'q, biz yordamimizda tasvirlab beramiz - ma'lumotlar bazasiga MySQL jadvaliga rekord qo'shish. INSERT INTO– tse viraz, bu belgilangan MySQL ma'lumotlar bazasi jadvaliga yozuv qo'shadi. Ilovamizda biz jadvalga ma'lumotlarni qo'shamiz Talabalar.

Uzoqqa, qo'llarga yugurib, biz jadvallarning maydonlarini bildiramiz, ularning ma'nolarini qo'shamiz: (ism, familiya, elektron pochta). Ma'lumotlar kuylash tartibiga qo'shiladi. Qanday yozamiz (elektron pochta, familiya, ism) Qiymatlar boshqa tartibda qo'shiladi.

Qiymatga qadam qo'ying QIYMATLAR. Bu erda biz qiymatlarimizni belgilangan maydondan oldin o'rnatamiz. Bu darajadagi teri maydoni uning ma'nosidan xabardor. Misol uchun, bizning vipadka bir lahzaga ko'rinadi: name=Thom, familiya=Flakon, email= [elektron pochta himoyalangan] .

Nimani aytish muhim, bu erda mening formam qanday? so'ralgan SQL, PHP kodini sozlash. SQL zapit vinni buti ukladení panjalarida. Bizning holatda panjalar orasidagi va $sql = tse SQLdan keyin ketadiganlar so'raladi.

Kodning keyingi qismi ( 20 – 22 qatorlar) so'rovimizni ishga tushiramiz va so'rovning muvaffaqiyatini qayta tekshirishni amalga oshiramiz:

If (mysqli_query($conn, $sql)) ( "Yangi yozuv muvaffaqiyatli yaratildi" echo; )

Uchirishlar to'g'ri oziqlanishi uchun sizga muvaffaqiyat haqida ma'lumot beriladi.

Men qolgan qism ( 22 – 24 satrlar) bizning so'rovimizning tasodifiy ko'rinishini yana bir eslatmasini ko'rsatish uchun:

Aks holda ( "Xato: " . $sql . " aks-sadosi
" .mysqli_error($conn); )

Ushbu kod bizga kechirim haqida eslatmani ko'rsatadi, go'yo biror narsa noto'g'ri bo'lgandek.

Variant 2 - PHP maʼlumotlar obyekti usuli (P HP Data O obʼekti)

Oldingi dumbada bo'lgani kabi, biz viconaty oldida ma'lumotlar bazasiga ulanishimiz kerak, xuddi yangi PDO ob'ektini yaratishda bo'lgani kabi - oldingi ker_vnitstvo rozpovidaê ular haqida, u qanday bo'lishi kerak. MySQL ma'lumotlar bazasiga ulanish - tse PDO ob'ekti, biz so'rovni tayyorlash va ishga tushirish uchun turli xil PDO "usullari" (qo'shiq ob'ektining bir qismi kabi asl funktsiyalar) tanlash uchun javobgarmiz. Ob'ektlarning usullari quyidagi tartibda chaqiriladi:

$the_Object->the_Method();

PDO tahrirlashdan oldin SQL kodini tayyorlashga imkon beradi. SQL so'rovi boshlashdan oldin hisoblab chiqiladi va tuzatiladi. Shunday qilib, oddiy SQL in'ektsiya hujumi SQL kodini forma maydoniga yuklash orqali amalga oshirilishi mumkin. Masalan:

// Foydalanuvchi buni login formasining foydalanuvchi nomi maydoniga yozadi"; DATABASE foydalanuvchi_jadvalini DROP; // Yakuniy so'rov bu "SELECT * FROM user_table WHERE username = thom"; DATABASE foydalanuvchi_jadvalini DROP;

Skilki SQL kodi sintaktik jihatdan to'g'ri, kim bilan talon-taroj qilish kerakligi DROP DATABASE user_jadval yangi SQL so'rovi va yozuvlar jadvalingiz o'chirildi. Tayyorlanayotgan Virazi belgilarga ruxsat bermaydi і ; chiqish so'rovini bajarish uchun, bu ko'rsatma TO'CHIRISH MA'LUMOTLAR BAZASI hech kim g'alaba qozonmaydi.

Zavjdi Agar siz PDO maʼlumotlar bazasidan maʼlumotlarni boshqarsangiz yoki olsangiz, tayyorlayotgan narsangizni zabt eting.

Tayyorlanayotgan g'olib til uchun yaxshiroq usul kabi yangi o'zgarishlarni yaratish kerak tayyorlang() ma'lumotlar bazasi ob'ekti.

To'g'ri ko'rinadigan kod quyidagicha ko'rinadi:

$servername = "mysql.hostinger.com"; $ma'lumotlar bazasi = "u266072517_name"; $username = "u266072517_user"; $parol = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$ma'lumotlar bazasi;"; $dsn_Options = ; // PDO-dan foydalanib MySQL ma'lumotlar bazasiga yangi ulanish yarating, $my_Db_Connection - ob'ektni sinab ko'ring ($my_Db_Connection = new PDO($sql, $foydalanuvchi nomi, $parol, $dsn_Options); echo "Muvaffaqiyatli ulandi"; ) catch (PDOException $ xato) ( echo "Ulanish xatosi: " . $error->getMessage(); ) // Sizning qiymatingizga mos keladigan odam uchun parametrlarni o'rnating $first_Name = "Thom"; $last_Name = "Flakon"; $email = " [elektron pochta himoyalangan]"; // Bu erda biz parametr sifatida himoya qilishni tanlagan Ma'lumotlar bazasi ob'ektining sarlavha () usuli // SQL SQL va maqsad sifatida o'rin egallovchilari ê opsiyasi yaratdik: placeholder_name $my_Insert_Statement = $my_Db_Connection-> tayyorlaydi. ("INSERT INTO Students (ism, familiya, email) VALUES (:first_name, :last_name, :email)"); // Endi biz skriptga har bir to'ldiruvchi bindParam() usuli yordamida aslida qaysi o'zgaruvchiga ishora qilishini aytamiz // Birinchi parametr yuqoridagi bayonotda to'ldiruvchidir - Ikkinchi parametr o'zgaruvchi bo'lib, u $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_name bindParam(:email, $email); // So'rovni biz aniqlagan ma'lumotlardan foydalanib bajaring // execute() usuli muvaffaqiyatli bo'lsa TRUE qiymatini qaytaradi, agar u bajarilmasa, FALSE qiymatini qaytaradi, agar ( $my_Insert_Statement->execute()) ( echo) bo'lsa, bu yerda xabarlaringizni yozish imkonini beradi. "Yangi yozuv muvaffaqiyatli yaratildi"; ) el se (echo "Yozuv yaratib bo'lmadi"; ) // Ushbu qadam bilan siz ular parametrlarning qiymatlarini o'zgartiradilar va ma'lumotlar bazasidan bir muddat oldin bajariladi $first_Name = "Jon"; $last_Name = "Smit"; $email = " [elektron pochta himoyalangan]$my_Insert_Statement->execute(); // Agar ($my_Insert_Statement->execute()) ( echo "Yangi yozuv muvaffaqiyatli yaratildi"; ) else ( "Yozuv yaratib bo'lmadi"; ) o'zgaruvchilar o'zgarganidan keyin yana bajaring.

28, 29 va 30 mi vikoristovuemo usuli qatorlarda bindParam() ma'lumotlar bazasi ob'ekti. Є shunday o'z-o'zidan usul bindValue(), old qismida vídríznyaêtsya.

  • bindParam() - ma'lumotlarni to'plash uchun qaysi usul ishlatiladi, agar usul bajarish() yetdi. Skript birinchi marta usulga etib boradi bajarish() vin Baxit, scho $first_name"Thom" ni so'rang, u ushbu belgining qiymatini ko'rsatadi. Agar skript to'satdan usulga kirsa bajarish(), nimaga hayron bo'lish uchun g'alaba qozonish $first_name endi "Jon" ni so'rang, xuddi shu qiymatni ko'rsating va yangi qiymatlar bilan yana so'rashni boshlang. Bir marta so'rash va skriptning turli joylarida turli ma'lumotlarni taqdim etish uchun nima qilayotganimizni tushunish muhimdir.
  • bindValue() - Ushbu usul ma'lumotlarni hisoblab chiqadi, chiziqning pastki qismiga erishish oson. Oskilki ma'nosi $first_name Bulo "Thom" sifatida o'rnatildi, Ayni paytda, agar biz usulga erishgan bo'lsak bindValue(), bu vikliku usuli bilan vikoristano bo'ladi bajarish() uchun $my_Insert_Statement.

Qaytish hurmati, biz yana g'alaba bilan o'zgartiramiz $first_name va birdaniga yangi qiymatni o'rnating. Agar siz ushbu skriptni ishga tushirgandan so'ng ma'lumotlar bazasini o'zgartirsangiz, o'zgartirish qiymatidan farqli o'laroq, berilgan nomlardan haqoratlar bo'ladi. $first_name masalan, skript uchun bitta "Jon" bo'ladi. Shuni yodda tutingki, PHP uni ishga tushirishdan oldin skript maydonini baholaydi.

O'zgartirish orqali skriptingizni qanday o'zgartirasiz bindParam ustida bindValue, MySQL ma'lumotlar bazasiga "Thom Vial" dvíchí qo'shasiz va Jon Smit e'tiborga olinmaydi.

Krok 3

Biz MySQL ma'lumotlar bazasida muvaffaqiyatli ishga tushirganimiz so'ralganda, sizga eslatib o'tmoqchimiz:

Afv qilishning kengayishi haqidagi tasavvur

MySQLi

Boshqa holatda, ko'tarilgan eslatmaning o'rniga afv etish haqida eslatma ko'rsatiladi. Masalan, kodimizda bitta sintaktik kechirimga ruxsat beraylik va biz buni qabul qilamiz:

Bachimo singari, kodning birinchi qismi xavfsiz, ulanish muvaffaqiyatli o'rnatildi, ammo SQL bir soat davomida yuklandi, muvaffaqiyatsiz bo'ldi.

"Xato: INSERT INTO Talabalar (ism, familiya, email) VALUES ("Thom", "Flakon", " [elektron pochta himoyalangan]") SQL sintaksisini tekshirishingiz mumkin; "(ism, familiya, elektron pochta) VALUES ("Thom", "Flakon", "" yaqinida foydalanish uchun to'g'ri sintaksis uchun MySQL server versiyasiga mos keladigan qo'llanmani tekshiring. [elektron pochta himoyalangan]")" 1-qatorda"

Bizning skriptimiz oxirida muvaffaqiyatsizlikka olib keladigandek, sintaktik tarzda kechirishga ruxsat beriladi. Buni kechiring:

$sql = "INSERT INTO Talabalar (ism, familiya, email) VALUES ("Thom", "Flakon", " [elektron pochta himoyalangan]")";

Qanday qilib bachite qilasiz, mi vikoristovuemo figurali kamarlarni yumaloq o'rniga. Bu bizning skriptimizda sintaktik kechirishni keltirib chiqarishning yo'li emas.

PDO

7-qatorda PDO ulanishida "barcha istisnolarni ko'rsatish" (barcha istisnolarni ko'rsatish) uchun o'rnatilgan kechirimli ishlov berish rejimi mavjud. Agar siz skriptni tartibga solsangiz va omadsizlikni so'rasangiz, kechirim haqidagi eslatmani olib tashlamaysiz. Ko'proq oqlanish bilan muayyan muammolar paydo bo'ladi. Asosan, agar siz skriptni kengaytirsangiz, g'alaba qozonish osonroq bo'ladi, shuning uchun siz o'sha jadvaldagi ma'lumotlar bazalarining nomlarini ko'rsatishingiz mumkin, agar kimdir sizning ma'lumotlaringizga ruxsatsiz kirishni bilishni xohlasangiz. Boshning tepasida, dumaloqlar o'rniga jingalak kamar g'alaba qozongan bo'lsa, kechirim quyida ko'rsatilgandek ko'rinadi:

Noto'g'ri xato: "SQLSTATE" xabari bilan "PDOException" istisnosi: Sintaksis xatosi yoki kirish huquqi buzilishi: 1064 Siz SQL sintaksisida xato qila olmaysiz; "(ism, familiya, elektron pochta) VALUES ("Thom", "Flakon", "" yaqinida ishlatiladigan to'g'ri sintaksis uchun mySQL server versiyasiga mos keladigan qo'llanmani tekshiring. [elektron pochta himoyalangan]")" 1-qatorda"

Siz duch kelishi mumkin bo'lgan boshqa muammolar:

  • Noto'g'ri ko'rsatilgan maydonlar (yaroqsiz maydonlar va yozma nomlarni kechiradi).
  • Maydon turining qiymat turini bilmaslik. Misol uchun, agar biz raqamga qiymat berishni xohlasak 47 maydon Ism, biz kechirim qabul qilamiz, o'tkaziladigan narsaga, ketma-ket bo'ladi. Ale, agar siz raqamni panjalarga kiritsangiz, masalan, “47” , afv bo'lmaydi, har bir sohada raqamimiz ketma-ket yoziladi.
  • Jadvalga ma'lumotlarni kiritishga harakat qiling, bu mumkin emas, lekin jadvalning yozma nomini kechiring.

Barcha afvlar afv etish uchun tuzatilishi mumkin yoki kechirimlar jurnalini qayta ko'rib chiqish orqali qayta ko'rib chiqilishi mumkin (inglizcha).

Ma'lumotlar muvaffaqiyatli yakunlangandan so'ng, biz ularni ma'lumotlar bazamizga qarzdormiz. Jadvalning dumbasining o'qi, yakuda biz hayratga tushgandek, ma'lumotlarimizni qo'shdik phpMyAdmin.

Visnovok

Kim bilan yordam bergan bo'lsangiz, siz vikoristovuvat kabi vyvchilisiz MySQL jadvaliga yozuv qo'shish uchun PHP kodi g'alabalardan MySQLiі PDO. Shunday qilib, ular o'sha olchaning keng ko'lamli kechirimlariga qarashdi. PHP kodini MySQL ma'lumotlar bazasiga qo'shish uchun qanday buzishni bilish, agar siz o'z saytingizni qanday dasturlashni yoki yaratishni o'rgansangiz yaxshi fikr bo'ladi.

Bu darajada biz MySql ma'lumotlar bazasiga ma'lumotlarni, toza shaklda kiritilgan ma'lumotlarni kiritishimiz mumkin. Siz MySql ma'lumotlar bazasiga veb-sahifa kodidan qanday kirishni, shuningdek, ma'lumotlarni qayta ishlash va ma'lumotlar bazasiga qanday kiritishni bilasiz.


O'tgan darsda men sizga Denverni kompyuteringizga qanday o'rnatish, o'z ma'lumotlar bazasini yaratish, unga nusxa ko'chirish, ma'lumotlar bazasida jadval yaratish haqida gapirib berdim va biz uni bitta yozuvga to'ldirganmiz.

Ayni paytda biz koristuvacha ma'lumotlarini kiritish uchun html hujjatni, shuningdek, MySql ma'lumotlar bazasi bilan bog'lanish va u erga yangi yozuvlarni kiritish uchun ishlov beriladigan ma'lumotlar bo'lgan ushbu ma'lumotlarning PHP fayl-kollektorini yaratamiz. .

Slyvdan slyvga o'tish, keling, buni to'g'ri qilaylik.

Koristuvach ma'lumotlarini MySql ma'lumotlar bazasiga veb tomondan qo'shamiz

Birinchi qadam: ma'lumotlarni kiritish uchun HTML formasini yarating

Biz boshidanoq php, MySql bilan ishlashga tayyorgarlik ko'rishimiz kerak va yozma kodni mahalliy kompyuterda sinab ko'rishdan oldin. Kimdan:

1. Kompyuterda Denwer-ni ishga tushiring.

2. Denver tomonidan yaratilgan virtual diskni ko'ring (masalan, "Z" diskidan foydalanishim mumkin). Quyidagilarni kiriting: home - localhost - www - u erda yangi papka yarating va unga nom bering (men uni "db1" deb nomlayman).

3. Agar siz Adobe Dreamweaver-da ishlasangiz, sayt menejeriga o'ting, u erda "Yangi" tugmachasini bosing, yaxshi yaratilgan papkaga yo'lni tanlash usuli sifatida, maydonda siz saytga nom berishingiz mumkin, keyin Saqlash - Bajarildi tugmasini bosing. Keyin jildingiz Adobe Dreamweaver dasturining o'ng panelida paydo bo'ladi.

1. Endi ajoyib html fayl yaratamiz (uni info_form.html deb ataymiz va db1 papkasini o'zimiz yaratishimiz uchun saqlaymiz) va ma'lumotlarni kiritish uchun u erga forma kodini yozamiz. new_db ma'lumotlar bazasidagi foydalanuvchilar jadvalimiz avtomatik ravishda yuklanishi mumkin bo'lgan bir qator maydonlarga ega (id maydoni avtomatik ravishda yuklanadi). Vihodyachi zgogo, siz haqoratli ko'rinish kodini yaratishingiz mumkin:

Nomsiz hujjat










Bu erda retseptlar faylimiz shaklining harakat parametri form.php. Vin biz yaratgan namuna fayl bo'ladi.

Shaklimizni uslublash uchun style.css faylini yarataylik. Víne vzhe podklyucheniya y kody, shuning uchun scho sho faqat yogo yaratish uchun qoldi, uni html fayli bilan bir xil papkaga joylashtiring va yangi kodga yozing:

Tana(kengligi:400px; chekka:0 avtomatik; fon:#F8F4B6;) yorliq(displey: blok; float: chap; kenglik: 150px; toʻldirish: 0 10px; hoshiya: 18px 0 0; matnni tekislash: oʻng;) # yuborish (float: o'ng; chet: 5px 50px 10px 0;)

Endi shakl quyidagicha ko'rinadi:

Biroq, agar siz ma'lumotlarni kiritib, shaklni topshirishga harakat qilsangiz, unda siz kechirim olasiz, chunki skriptlar katalogida joylashgan form.php fayli mavjud emas.

Obrobnik faylini yarating - bu bizning vazifamiz.

2. Keling, papkaning o'rtasiga boraylik db1 nomli papka yaratamiz "skriptlar". Biz barcha skriptlarimizni MySql ma'lumotlar bazasi bilan birgalikda saqlaymiz.

Jildni yaratgandan so'ng, yangi PHP fayl yarating va uni nomlar ostida skriptlar papkasida saqlang form.php.

Ammo bundan oldin ma'lumot yig'uvchi fayl bilan band bo'lish kerak, bizning ma'lumotlar bazamizga ulanish kerak. Men bu okremy fayl va o'qi uchun yaratish targ'ib qilaman nima uchun:

Eng muhimi, loyihangiz uchun MySql ma'lumotlar bazasi bilan nafaqat bitta fayldan ulanishingiz kerak bo'ladi. Qoida tariqasida, loyiha uchun turli xil fayllar ma'lumotlar bazasi bilan almashtiriladi.
Bunday teri faylida bazaga ulanish uchun bir xil kodni belgilash yanada amaliy emas. Va bunday fayllarga qo'shimcha ravishda, masalan, 50 va bir yaxshi kun bo'ladi, siz koristuvach uchun parolni o'zgartirasiz va siz barcha 50 ta faylni topib, uni teri ishida tuzatasiz.
MySql ma'lumotlar bazasi bilan bog'langan bo'lishi mumkin bo'lgan teri fayliga ulanadigan okrem fayliga ulanish uchun buzish yaxshiroqdir. Ayni paytda faqat bitta faylda tuzatishlar kiritish kerak.

Otzhe, keling, yangi PHP fayl yarataylik, uni yoga deb ataymiz connect.php skriptlar uchun papkaga joylashtirilgan. Yangisida biz MySql ma'lumotlar bazamizga kirish kodini, shuningdek, turli xil viniknennyalar uchun kechirimlar haqida eslatuvchi kodni yozamiz. Parametrlar sifatida muxbir nomini, parolingizni va ma'lumotlar bazasi nomini ro'yxatdan o'tkazishingiz kerakligiga e'tibor bering. Yak xost buti mystseviy xost aybdor.

O'lpon asosiga bog'langan kechir! " .mysql_error() ."

"); mysql_select_db("new_db")//kishandagi parametr ("Im'basi, nega xohlaysan") yoki o'lish("

Bazi danihni tanlaganim uchun kechir! ". mysql_error() ."

"); ?>

Endi form.php fayliga o'tamiz va qo'shimcha haqoratli kod uchun yangi connect.php fayliga o'tamiz:

Shaklni topshirishga harakat qilganingizdan so'ng, siz bo'sh veb-sahifani tuzatgandan so'ng ishlaysiz. Hechqisi yoʻq, chunki biz bazaga endigina qaytdik va hozircha hech narsa koʻrinmayapti.

Shuningdek, sizga kechirim haqida ma'lumot berildi, barcha parametrlarning to'g'riligini o'zgartiring (xost nomi, parol, xost nomi: localhos, ma'lumotlar bazasi nomi), shuningdek, Denver qo'shimchalari kiritilganligiga ishonch hosil qiling.

3. Biz MySql ma'lumotlar bazasi bilan uzoqqa ketdik va endi bizga kerak namuna faylimizdagi ma'lumotlar formasiga kiritilgan ma'lumotlarni qabul qiling. Biz html hujjatlari uchun bir xil bo'lgan "ism" atributlari bilan yordam berishimiz mumkin.

Ma'lumotlarni qayta ishlash uchun biz veb-shakldagi barcha ma'lumotlarni taqdim etadigan maxsus PHP o'zgarishini tezlashtiramiz. Ushbu o'zgarish "$_REQUEST" deb nomlanadi.

connect.php fayliga ulangandan so'ng form.php fayliga quyidagi kodni qo'shing:

$first_name = $_REQUEST["first_name"]; $last_name = $_REQUEST["familiya_ism"]; $email = $_REQUEST["elektron pochta"]; $facebook = $_REQUEST["facebook"];

4. Biz fayldan ma'lumotlarni oldik va o'zgarishlarga kiritdik. Endi kerak Ma'lumotlarni MySql ma'lumotlar bazasi jadvalimizga yuklang. Buning uchun quyida quyidagi kodni yozish kerak:

$insert_sql = "Foydalanuvchilarni INSERT INTO (Ism, familiya, email, facebook)" . "VALUES("($first_name)", "($familiya_ism)", "($email)", "($facebook)");"; mysql_query($insert_sql);

Bu erda biz "foydalanuvchilar" jadvali maydoniga qo'shimcha o'zgartirishlar kiritishimiz kerakligini aytib, sizdan so'raymiz. Biz $insert_sql o'zgarishidan so'rovni keltiramiz. Va keyin mysql_query maxsus funktsiyasidan yordam so'rashimiz mumkin.

Agar siz ushbu shaklni darhol to'ldirsangiz va ma'lumotlar bazangizdagi "foydalanuvchilar" jadvaliga qarasangiz, siz nazoratdan so'ng u erda paydo bo'ladigan yangi yozuvni boshlaysiz.

5. Biz MySql ma'lumotlar bazasi jadvaliga veb-sahifadan yangi yozuvni joylashtirdik. Endi men ma'lumotlarimiz kiritilgan formatga biroz tegmoqchiman.

Birinchi navbatda, agar shaxs anketani to'ldirib, ma'lumotni kiritishda noto'g'ri bo'shliqni qo'yishi mumkin bo'lsa, bu vaziyat haqida gapirish kerak. Siz kesishingiz kerak.

Boshqacha qilib aytganda, bizda Facebook uchun maydon bor. Ma'lumotni so'ralganidek kiritishni istasak, ushbu sohadagi ma'lumotlar to'g'ri formatda to'planganligiga ishonch hosil qilishimiz kerak (ya'ni, "http://www.facebook.com/identifier on facebook") . Ale koristuvach biz kerak, shuning uchun qi ma'lumotlarni kiriting zavzhda emas. VIN kodini kiritish mumkin: "www.facebook.com/facebook id", "facebook.com/facebook id" yoki oddiygina "/facebook id".

Bu holatlar o'ziga xosdir. Kim uchun bizning kodimiz podkoriguyomo. Qo'shimcha funktsiyalar uchun bo'shliqlarni kesishimiz mumkin kesish, va facebook uchun kiritilgan URL toʻgʻriligini tekshirish funksiyasi boʻladi preg_match. Bu darajada form.php faylidagi barcha kodlar keyingi darajaga o'xshaydi:

Nomsiz hujjat Bazaga yangi rekord qo'yildi!

"; ?>

Funktsiya haqida preg_match:
Butun funktsiya muntazam tebranishlar bilan hazildir.

Arklar uchun birinchi parametr oddiy virase, ikkinchisi esa kerak bo'lganda qatordir.

Funktsiya faqat birinchi zbígni aylantiradi: 0 - agar zbígív bo'lmasa, 1 - zbíg ê bo'lsa.

Shaklni toʻgʻri toʻldirishga hozir harakat qilib koʻring, istalgan maydonni toʻldirishda notoʻgʻri boʻsh joyni toʻldiring va http://siz facebook manzilini kiriting yoki faqat facebook identifikatoridan foydalaning. So'rovni so'rang va keyin ma'lumotlar bazasiga o'ting va siz noto'g'ri to'ldirishdan qat'i nazar, ma'lumotlar bizga kerakli ko'rinishda bo'lishi mumkinligini aytasiz.

Kim haqida darsni tugataman. Siz ushbu darsning barcha fayllarini o'zingizning yozuvlaringizda o'zgartirishingiz mumkin (faqat connect.php fayllaringiz parametrlarini tuzatishni unutmang).

Va keyingi yillarda biz MySql ma'lumotlar bazasidan ma'lumot olishni, yozib olish zaruratini tanlashni va ularni ekranda ko'rsatishni o'rganamiz. Kelgusi darsni o'tkazib yubormaslik uchun quyida ko'rib turganingizdek, qo'shimcha obuna shakllari uchun blog yangilanishiga obuna bo'ling.

Ijtimoiy tarmoqlarda qo'shimcha tugmalar uchun sharhlaringizni qoldiring va do'stlaringiz bilan baham ko'ring.

Muvaffaqiyat va kelgusi soatda tong otguncha!

Men sizga ushbu post haqida aytib bermoqchiman, Bazi Danixga qanday topshirish kerak, shaklga ma'lumotlarni kiriting. Shunday qilib, biz ikkita maydonga ega bo'lgan oddiy shakl yaratamiz:

Ismingiz:
Sizning elektron manzilingiz:


Ushbu shakldan yangi muxbirni ro'yxatdan o'tkazish, yangiliklar yuborish, statistik ma'lumotlarni yig'ish uchun foydalanish mumkin, bu har doim yoqimli ... Ushbu shaklni kiritish orqali ma'lumotlaringizni to'ldiring: o'sha xabarni yuboring, tugmani bosing va ma'lumotlarni bering php skripti:

$name = $_POST["ism"]; $email = $_POST["elektron pochta"]; $result = mysqli_query("INSERT INTO foydalanuvchi (ism, email) VALUES ("$name", "$email")"); if ($result) ( echo "Muvaffaqiyatli tejash!"; ) else ( echo "Meni kechirishdi, mehribon bo'ling, qayta urinib ko'ring."; )


Skriptlar nima qiladi? Keling, buni aniqlaylik!
Ma'lumotlar shaklini kiriting, PHP skriptiga o'tish uchun POST usulidan foydalaning (bu ko'proq imlo) va global $_POST massivining yordami uchun $name va $email o'zgarishida ma'lumotlar shakllanadi:

$name = $_POST["ism"]; $email = $_POST["elektron pochta"];


Shundan so'ng, o'zgarish bazaga olib kelishga tayyor bo'lgani uchun biz so'rovni qo'shamiz. Va birinchi navbatda, quyida Sizning skriptlaringiz kerak, lekin allaqachon ma'lumotlar bazasiga ulangan, ma'lumotlar bazasiga qanday ulanish kerak, men ushbu mavzuda yozdim: . U o'zidan shunday ko'rinishni so'radi:

$result = mysqli_query("INSERT INTO foydalanuvchi (ism, email) VALUES ("$name", "$email")");


Ushbu kod uchun otasining ismi va elektron pochtasidan oldin foydalanuvchi jadvalidagi kabi quyidagi o'zgarishlar qo'shilishi ko'rsatilgan: $name va $email .
Hammasi yaxshi o'tganligi sababli, biz eslatib o'tamiz:

Maʼlumotlar muvaffaqiyatli saqlandi!


Haqiqatan ham, muammolar va ma'lumotlar kiritilmaganligi sababli, kechirim haqida eslatib o'tishimiz kerak:

Kechirim bor edi, mehribon bo'ling, testni takrorlang.


Hammadan mendan!

*** *** *** *** ***

Bazannym uchun siz ma'lumotni kiritish uchun ko'proq sug'orishni qo'shishingiz mumkin, masalan, biz koristuvach joyini kiritish uchun maydonni kiritishimiz kerak. Bizda allaqachon skript tayyor (ko'proq yozish), endi faqat maydon qo'shing Sizning joyingiz, nomini $city ga o'zgartiring. Shunday qilib, ma'lumotlarni kiritish shaklida, keyin:

Sizning elektron manzilingiz:


qo'shing:

Joylashuvingiz:


PHP skriptida, keyin:

$email = $_POST["elektron pochta"];


qo'shing:

$city = $_POST["shahar"];


Xo'sh, va, albatta, iltimos, xuddi shunday qo'shing, o'q quyidagicha:

$result = mysqli_query("INSERT INTO foydalanuvchi (ismi, email, shahar) VALUES ("$name", "$email", "$city")");


Natijada ko'rish mumkin bo'lgan o'q:
Kirish shakli:

Ismingiz:
Sizning elektron manzilingiz:
Joylashuvingiz:


Skript:

$name = $_POST["ism"]; $email = $_POST["elektron pochta"]; $city = $_POST["shahar"]; $result = mysqli_query("INSERT INTO foydalanuvchi (ismi, email, shahar) VALUES ("$name", "$email", "$city")"); if ($result == true) (echo "Muvaffaqiyatli saqlandi!"; ) else ( echo "Bu kechirim bo'ldi, mehribon bo'ling, qayta urinib ko'ring."; )


Bachit kabi hech narsa yig'ilmaydi! Agar kerak bo'lsa, siz ko'proq maydon qo'shishingiz mumkin, ko'proq, ko'proq ...

Fikrlar blogdan koʻchirildi

SERGII
14.09.2016 01:25
Xayrli kun!
Xuddi shu ovqatni aytish uchun: ma'lumotlar bazasidan foydalanmasdan ma'lumotlarni tejash va dasturlarni tuzatishning eng oson yo'li qanday? MySQL yoki Access-ga ulanish istalmagan.

ADMIN
14.09.2016 22:14 da
Xayrli kun!

Properties.Sozlamalar
App.Config
XML fayl
ketma-ketlashtirish
Ro'yxatdan birini tanlashga harakat qiling.

MIKOLA
16.09.2016 02:28
Salom, dataGridVIew va phpMyAdmin-dan dataGridVIew qatorini qanday ko'rish mumkin.

PhpMyAdmin? Ma'lumotlar bazasiga ega robot uchun butun qobiq, tushuntira olasizmi?

MIKOLA
18.09.2016 02:24
DataGridView va ma'lumotlar bazasidan ko'rilgan qatorni ko'rish kerak.

ADMIN
19.09.2016 soat 07:00
Mysql ma'lumotlar bazasida qatorni qanday ko'rish mumkin - maqola qo'shish orqali.

MIKOLA
20.09.2016 09:20
Ajoyib dyakuyu.

DIMA
20.09.2016 10:24
Salom, bu usulni DataGridView orqali emas, balki ComboBox orqali amalga oshirish mumkinmi? Yakscho shunday, keyin yak? Rahmat.

ADMIN
22.09.2016 03:21
Vitanniya. Dumba:

GENADY
22.09.2016 18:25 da
Nima uchun System.Windows.Forms.TextBox, Text ma'lumotlar bazasiga quyidagi matnni qo'shishim kerak:

Tse oxirigacha artikl o'qi tse (ge) ko'rsatkichlar matnining to'g'rilangan jadvallarida gen hoch yoziladi. gen so'zi aybdor Bulo uzoq xor bo'ladi

ADMIN
24.09.2016 04:17 da
Shvidshe SQL ning barcha noto'g'ri imlolari uchun so'raydi, masalan:

textBox1 uchun nomni kiriting: Gen.

Sql so'rovi: "Jadval nomi qiymatlarini kiriting (textBox1, ..)"; Natija: System.Windows.Forms.TextBox

Va siz o'tishingiz kerak: "Jadval nomi qiymatlarini kiritish (textBox1.Text, ..)";
Natija: Gena

GENADY
24.09.2016 18:41 da
Bu juda tashqarida va ê. rahmat

SERGII
25.09.2016 11:51 haqida
Xayrli kun. Va textBox orqali ma'lumotlar bazasiga qo'shishni qanday amalga oshirish kerak?

ADMIN
26.09.2016 20:53 da
Hammasi printsipial jihatdan bir xil. Masalan, qolgan dumbani oling, bu yangisi uchun kerak:

//parametrlarni yaratish va ularni to'plamga qo'shish cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@LastName", textBox2.Text);

endi parametrlar: Ism va familiya matn maydoniga kiritilgan qiymatlarni qabul qiladi va ularni ma'lumotlar bazasiga o'tkazadi

LINARU
27.09.2016 17:45 da
Salom, dataGridVIew va phpMyAdmin qatorini qanday ko'rasiz?

ADMIN
29.09.2016 02:06 da
phpMyAdmin qatorini qanday ko'rish mumkinligini bilmayman. Va dataGridView-da, masalan, SelectionChanged bo'limining yordami uchun ishlashingiz mumkin.

PSH
30.09.2016 03:48
2Linara:
Agar siz qatorlarni juda ko'p tahrirlashni istasangiz, HediSQL vositasidan foydalaning, qatorlarni o'zgartiring va o'zgartiring.

2admin
Xayrli kun! Materiallar uchun tashakkur - hamma narsa salqin tarzda joylashtirilgan)
Ovqatlar: Men ushbu so'rov bilan ma'lumotlarni qo'shaman (vino sinovi):

String sql = "INSERT INTO foydalanuvchilar (`FIO`, `Tur`, `Count`, `Cost`, `Sana`, `Pasport`, `Tug`ilgan`) VALUES ("Kolyan", "Moskva", "1+1" ", 1100, "2011-11-11", "1111 1111", "11/9/1900");";

Ma'lumotlar kiritildi hammasi yaxshi, lekin ma'lumotlar bazasida (mysql) kirill alifbosining nomi "????" ko'rsatiladi.

Visual studio System.String bu Unicode ketma-ketligi ekanligini aytadi.

Shunday qilib, sinab ko'ring:

ALTER DATABASE `test` COLLATE "koi8r_general_ci"; ALTER TABLE `users` COLLATE="koi8r_general_ci"; ALTER MA'LUMOTLAR BAZASI `test` COLLATE "utf8_unicode_ci"; ALTER TABLE `users` COLLATE="utf8_unicode_ci";

Ale yordam bermaydi.
O'ng tomonda kim bo'lishi mumkin? Turli kodlash VS va DB? Nima?
O'qish/o'zgartirish uchun biror narsa yubora olasizmi?
rahmat

ADMIN
01.10.2016 09:49 da
Vitanniya.

Ma'lumotlar bazasi (va jadvallar) utf_general_ci bayonotiga ega

Xo'sh, hiba ê ning joylashuvi? Balki utf8_general_ci?

Utf8_general_ci ni tanlab Mysql ma'lumotlar bazasini yaratishni boshlang, shuning uchun kirill alifbosida hech qanday muammo bo'lmaydi, chunki mijoz serverga kelmasligi aniq.

Moslashtirish uchun COLLATION tanlanadi, lekin xuddi shu tarzda kodlash (charset) muhim ahamiyatga ega. Shuning uchun u serverda to'g'ri joylashtirilganligini qayta ko'rib chiqish kerak, masalan, lotin1 emas, balki utf8 da.

.net orqali ulanganda ulagich (qulflash uchun) latin1 ga o'rnatiladi, aks holda ulanish qatorida utf8 kodlashni aniq ko'rsatish kerak:

MySqlConnection mycon; mycon = new MySqlConnection("server=127.0.0.1;uid=vasya;pwd=123;ma'lumotlar bazasi=test;Charset=utf8;"); // MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
01.10.2016 11:34 da
Siz o'zingizni tasvirlab harakat qilasiz, utf8_general_ci!
Bu juda ko'p yordam berdi; Charset = utf8;
Rahmat sizga ulug'vor!

SERGII
02.10.2016 11:02 haqida
Dyakuyu ishchi dumba uchun, kerak. Ovqat
Men matn maydonini ma'lumotlar bazasining IP manzilini kiritmoqchi bo'lgan tarzda yaratdim, lekin ma'lumotlar o'qini bu erga qanday yuborishni bilmayman.

String conStr = " [elektron pochta himoyalangan];user=test;" +
"ma'lumotlar bazasi=test;parol=test;";
Iltimos, ushbu tuzilmadagi Windows formasidagi matn maydonlaridan ma'lumotlarni qanday kiritishni taklif qiling.

ADMIN
03.10.2016 11:50 haqida
"[elektron pochta himoyalangan];user=...
Buning o'rniga, ushbu maqola kabi g'olib kuchlar qatorini almashtirish yaxshiroqdir, lekin String.Format () usuli

OLGA2203
15.05.2017 20:14 da

String Connect = “Server=127.0.0.1;Port=3306;Ma’lumotlar bazasi=baza;Ma’lumotlar manbai=localhost;user=root;”; MySqlConnection con = Yangi MySqlConnection(Ulanish); con.Open(); //Ma'lumotlar bazasi ma'lumotlarini o'rnatish. MySqlCommand cmd = Yangi MySqlCommand(); cmd.CommandText = @"INSERT INTO (ID, Turkum, Nom, Savdo belgisi, Narx, Surat, Hajmi, Rang, Material, Hisob) VALUES (@pr, @Category, @Name, @TradeMark, @Price, @Foto, @ Hajmi, @Rang, @Material, @Count)”; cmd.Parameters.AddWithValue(“@pr”, hisoblagich); cmd.Parameters.AddWithValue(“@Category”, comboBox1.SelectedItem.ToString()); cmd.Parameters.AddWithValue(“@Name”, textBox1.Text); cmd.Parameters.AddWithValue(“@TradeMark”, textBox2.Text); cmd.Parameters.AddWithValue(“@Price”, Convert.ToInt32(textBox4.Text)); cmd.Parameters.AddWithValue("@Photo", textBox3.Text); cmd.Parameters.AddWithValue(“@Size”, textBox6.Text); cmd.Parameters.AddWithValue(“@Color”, textBox5.Text); cmd.Parameters.AddWithValue(“@Material”, textBox8.Text); cmd.Parameters.AddWithValue(“@Count”, Convert.ToInt32(textBox7.Text)); cmd.Connection=con; cmd.ExecuteNonQuery(); MessageBox.Show("Qo'shish muvaffaqiyatli", "Qo'shish muvaffaqiyatli", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

Men kechirim so'zini ko'raman "ID ustuni" null bo'lishi mumkin emas, men ID ustunidagi qo'shimchani tozalayman - haqoratlilikning o'zi haqida yozaman va hokazo.
VALUES qo'llariga doimiy qiymat qo'shyapman, bazaga qator qo'shiladi.
Ayting-chi, mehribon bo'ling, muammo nima? Shakl orqali kiritilgan ma'lumotlar bazasidagi ma'lumotlarni o'sha qiymatni yozish kerak

Router