Xavfsizlik.  Sozlash; o'rnatish.  Internet.  Qayta tiklash.  O'rnatish

MySQL serveriga Php ulanish. PHP da ma'lumotlar bazasi so'rovlarini yuborish

php dan foydalanish...

Turli xil usullarda aloqa yaratish:

1) MySQL-ga ulanishning eskicha usuli:

$conn=mysql_connect($db_hostname, $db_username, $db_password) yoki o'lim ("Serverga ulanish yo'q");
mysql_select_db($db_database,$conn) yoki die ("Yo'q, ma'lumotlar bazasiga ulanish imkoni bo'lmadi");

Quyidagi o'zgaruvchilarning tushuntirishlari.

Quyidagi funktsiyalar qo'llaniladi:

  • mysql_connect()- serverga ulanish uchun;
  • mysql_select_db()- ma'lumotlar bazasiga ulanish uchun;

Shu bilan birga, biz doimo xatolarni shu tarzda tekshiramiz: yoki o'lamiz ("Xato shunday va shunga o'xshash"); - deb tarjima qilingan yoki falon xato bilan o'lgan - xato qaerda ekanligini darhol topish.

config.php

// ma'lumotlar bazasiga ulanish uchun o'zgaruvchilar
$host = "localhost"; /host
$username = "root"; // ma'lumotlar bazasiga ulanish uchun parol
$parol = ""; // ma'lumotlar bazasiga ulanish uchun parol - mahalliy kompyuterda u bo'sh bo'lishi mumkin.
$database_name = "mening-dolgi"; // ma'lumotlar bazasi nomi

// ma'lumotlar bazasiga ulanishning eski usuli
mysql_connect($host, $username, $parol) yoki die("Ulanishni yaratib boʻlmaydi");

// ma'lumotlar bazasini tanlang. Agar xato bo'lsa, chiqaring
mysql_select_db($database_name) yoki die(mysql_error());

index.php

require_once "config.php";


$result = mysql_query("Ismni tanlang, Pulni Dolg BY ORDER BY Money DESC LIMIT 5") yoki die(mysql_error());



";


esa ($ qator = mysql_fetch_assoc ($ natija)) (
";
}


mysql_free_result($natija);

// Ulanishni yoping
mysql_close();

2) Ko'proq progressiv protsessual uslub - mysqli-dan foydalanib ma'lumotlar bazasiga ulanish:

Bu usul:

  1. qulay;
  2. 40 barobar tezroq;
  3. xavfsizlikni oshirish;
  4. yangi xususiyatlar va funktsiyalar mavjud;

PHP da ma'lumotlar bazasiga jadvaldan tanlash bilan ulanishga misol

config.php

// ma'lumotlar bazasiga ulanish
$link = mysqli_connect("localhost", "foydalanuvchi nomi", "parol", "name-ma'lumotlar bazasi"); // bu erda biz to'g'ridan-to'g'ri ma'lumotlaringizni kiritamiz: foydalanuvchi nomi, parol va ma'lumotlar bazasi nomi, birinchi maydon odatda localhost

// chiqish ulanishi xatosi
agar (!$link) (
echo "Ma'lumotlar bazasiga ulanishda xato. Xato kodi: " . mysqli_connect_error();
Chiqish;
}

E'tibor bering - mysqli hamma joyda ishlatiladi, mysql emas!!!

index.php

require_once "config.php";

// so'rovni bajaring. Agar xato bo'lsa, biz uni ko'rsatamiz
agar ($ natija = mysqli_query($link,"Ismni tanlang, Pulni qarz BO'YICHA BO'YICHA BY Money DESC LIMIT 5")) (

Echo “Kimga qarzdorman kamayish tartibida:

";

// So'rov natijalari olinmoqda
esa ($ qator = mysqli_fetch_assoc($ natija)) (
echo $row["Ism"] . "qarz bilan". $row["Pul"] . "rubl.
";
}

// ishlatilgan xotirani bo'shatish
mysqli_free_result($ natija);

// Ulanishni yoping
mysqli_close($link);
}

Ko'rib turganingizdek, ba'zi nuqtalar o'zgargan (kursivda).

3) MySQL ma'lumotlar bazasiga ulanishning ob'ektga yo'naltirilgan usuli - usullar va sinflar yordamida:

Kamchiliklari: murakkabroq va xatolarga kamroq moyil.

Taroziga soling: tajribali dasturchilar uchun qisqalik va qulaylik.

$conn = yangi mysqli($db_hostname, $db_username, $db_password, $db_ma'lumotlar bazasi);
if($conn->connect_errno)(
die($conn->connect_error);
) else (echo "Ma'lumotlar bazasiga ulanish muvaffaqiyatli o'rnatildi";)

Bu erda, qoida tariqasida, hamma narsa intuitivdir:

  • $db_hostname bu mezbon(asosan localhost),
  • $db_ma'lumotlar bazasi - db nomi;
  • $db_username va $db_password - mos ravishda foydalanuvchi nomi va parol!

Jadvaldan namuna olish bilan php OOP uslubidagi ma'lumotlar bazasiga ulanishga misol

config.php

// ma'lumotlar bazasiga ulanish
$mysqli = new mysqli("localhost", "foydalanuvchi nomi", "parol", "name-ma'lumotlar bazasi"); // bu erda biz to'g'ridan-to'g'ri ma'lumotlaringizni kiritamiz: foydalanuvchi nomi, parol va ma'lumotlar bazasi nomi, birinchi maydon odatda localhost

// chiqish ulanishi xatosi
agar ($mysqli->connect_error) (
die ("JB ulanish xatosi: (" . $mysqli->connect_errno. ") " . mysqli_connect_error);
}

E'tibor bering - mysqli hamma joyda ishlatiladi, mysql emas!!! va oldingi usuldan farqli o'laroq, bu OOP uslubi ekanligini ko'rsatadigan "->" o'qlari paydo bo'ladi.

index.php

require_once "config.php";

// so'rovni bajaring. Agar xato bo'lsa, biz uni ko'rsatamiz
agar ($ natija = $ mysqli->so'rov("Ismni tanlang, Pulni qarz ORDER BY Money DESC LIMIT 5")) (

Echo “Kimga qarzdorman kamayish tartibida:

";

// So'rov natijalari olinmoqda
esa ($ qator = $ natija-> fetch_assoc()) {
echo $row["Ism"] . "qarz bilan". $row["Pul"] . "rubl.
";
}

// ishlatilgan xotirani bo'shatish
$natija->yopish();

// Ulanishni yoping
$mysqli->yopish();
}

Sizning vazifangiz farqlarni topishdir.

4) PDO yordamida ma'lumotlar bazasi bilan aloqa qilish:

MySQL ma'lumotlar bazasiga ulanishda tayyorlangan iboralar ishlatiladi (preparat usuli yordamida) va natijada xavfsizlikni oshiradi va ishlashni sezilarli darajada oshiradi.

konfiguratsiya fayli oldingi usuldan! - huddi shunaqa

index.php

// MySQL bilan aloqa qilish uchun PDO uslubi
if ($stmt = $mysqli->prepare("Ismni tanlang, Voney FROM Dolg BYPUL BO'YICHA ORDER< ? LIMIT 5")) {

$stmt->bind_param("i", $summa);
$summa = 100000;

// bajarishni boshlash
$stmt->execute();

// Tayyor qiymatlar uchun o'zgaruvchilarni e'lon qilish
$stmt->bind_result($col1, $col2);

Echo “Kimga qarzdorman kamayish tartibida:

";

// So'rov natijalari olinmoqda
while ($stmt->fetch()) (
echo $col1 . "qarz bilan". $col2 . "rubl.
";
}

// ishlatilgan xotirani bo'shatish
$stmt->yopish();

// Ulanishni yoping
$mysqli->yopish();

Ko'rib turganingizdek, bu erda bu ancha murakkab va siz PDOni o'rganishingiz kerak - bu alohida mavzu.

MySQL - relyatsion ma'lumotlar bazasi turi. MySQL turli xil foydalanuvchilar ulanishi mumkin bo'lgan serverdir.

Internetga ulansangiz, foydalanuvchi nomingiz va parolingizni, shuningdek, ulanayotgan server nomini kiritasizmi? MySQL bilan ishlashda xuddi shu tizimdan foydalaniladi.

Yana bir narsa: relyatsion ma'lumotlar bazasi nima? Jadvallar asosidagi relyatsion vositalar. Microsoft-ning mashhur elektron jadval muharriri Excel, aslida relyatsion ma'lumotlar bazasi muharriri.

MySQL serveriga ulanish

PHP da MySQL serveriga ulanish uchun mysqli_connect() funksiyasidan foydalaning. Bu funksiya uchta argumentni oladi: server nomi, foydalanuvchi nomi va parol.

Mysqli_connect() funktsiyasi ulanish identifikatorini qaytaradi, u o'zgaruvchida saqlanadi va keyinchalik ma'lumotlar bazalari bilan ishlash uchun ishlatiladi.

MySQL server ulanish kodi:

$link = mysqli_connect("localhost", "root", "");

Bunday holda, men Denwere-da mahalliy mashinada ishlayapman, shuning uchun xost nomi localhost, foydalanuvchi nomi root va parol yo'q.

MySQL bilan ishlashni tugatgandan so'ng ulanish ham yopilishi kerak. Ulanishni yopish uchun mysqli_close() funksiyasidan foydalaniladi. Keling, misolni kengaytiraylik:

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Xato"); mysqli_close($link);

Bu erda biz ulanish identifikatorining haqiqatni tekshirdik; agar ulanishimizda biror narsa noto'g'ri bo'lsa, u holda dastur bajarilmaydi, die() funktsiyasi o'z bajarilishini to'xtatadi va brauzerda xato xabarini ko'rsatadi.

Ulanish xatolari

Ulanishni tekshirish uchun quyidagi funktsiyalardan foydalaniladi:

  • mysqli_connect_errno() - oxirgi ulanish urinishining xato kodini qaytaradi. Hech qanday xato bo'lmasa, nolni qaytaradi.
  • mysqli_connect_error() - MySQL serveriga oxirgi ulanish xatosining tavsifini qaytaradi.
define("HOST", "localhost"); define("DB_USER", "root"); define("DB_PASSWORD", ""); define("MB", "sinovchi"); $link = mysqli_connect(HOST, DB_USER, DB_PASSWORD, DB); /* ulanishni tekshiring */ agar (mysqli_connect_errno()) ( printf("Ulanib bo'lmadi: %s\n", mysqli_connect_error()); exit(); ) else ( printf("Muvaffaqiyatli ulanish: %s\n" , mysqli_get_host_info($link)); )

mysqli_get_host_info() funksiyasi foydalanilayotgan ulanish turini o'z ichiga olgan qatorni qaytaradi.

Shuni ham yodda tutingki, belgilash buyrug'idan foydalanib, barcha ulanish parametrlarini doimiylar sifatida saqladim. Katta loyihalarni yozganingizda va MySQL serveriga ulanadigan ko'plab fayllar mavjud bo'lsa, ulanish parametrlarini alohida faylda saqlash va uni kiritish yoki talab funksiyasidan foydalanib kiritish qulay.

Ma'lumotlar bazasini tanlash

MySQL serveri bir nechta ma'lumotlar bazasiga ega bo'lishi mumkin. Avvalo, biz ishlashimiz kerak bo'lgan bazani tanlashimiz kerak. PHP da buning uchun mysqli_connect() funksiyasida yana bir parametr mavjud - ma'lumotlar bazasi nomi.

Men uni kompyuterimda phpMyAdmin orqali tester nomi bilan yaratdim. Keling, u bilan bog'lanamiz:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Xato"); mysql_close($link);

Shunday qilib, biz ishlash uchun ma'lumotlar bazasini tanladik. Lekin biz bilganimizdek, relyatsion ma'lumotlar bazasi jadvallardan iborat va bizning ma'lumotlar bazasida hali jadvallar mavjud emas. Ma'lumotlar bazasi bo'sh, jadvallarsiz yaratilgan. Jadvallar unga alohida qo'shilishi kerak. Endi unga PHP yordamida jadval qo'shamiz.

Jadval yarating

MySQL ma'lumotlar bazalari nomida SQL qismi tuzilgan so'rovlar tili sifatida tarjima qilingan Strukturalangan so'rovlar tilini anglatadi. Biz so'rovlarni SQL da yozamiz va ularni PHP dasturidan MySQL serveriga yuboramiz.

Jadval yaratish uchun biz faqat CREATE TABLE buyrug'ini berishimiz kerak. Keling, foydalanuvchilarning loginlari (login ustuni) va parollari (parol ustuni) saqlanadigan ustunlarida foydalanuvchilar deb nomlangan jadval yaratamiz.

$query = "JADVAL YARATISH foydalanuvchilar (login VARCHAR(20), parol VARCHAR(20))";

Ushbu kodda biz $query o'zgaruvchisiga SQL so'rovini ifodalovchi matn qatorini tayinladik. Biz VARCHAR(20) ma'lumotlar turidagi ikkita ustundan iborat login va parolni o'z ichiga olgan foydalanuvchilar deb nomlangan jadval yaratamiz. Maʼlumotlar turlari haqida keyinroq gaplashamiz, hozircha shuni taʼkidlaymanki, VARCHAR(20) maksimal uzunligi 20 ta belgidan iborat.

So'rovimizni MySQL serveriga yuborish uchun biz PHP funktsiyasidan foydalanamiz mysqli_query(). Agar operatsiya muvaffaqiyatli bajarilgan bo'lsa, bu funktsiya ijobiy raqamni qaytaradi va xatolik yuzaga kelgan bo'lsa, noto'g'ri raqamni qaytaradi (so'rov sintaksisi noto'g'ri yoki dastur so'rovni bajarish uchun ruxsatga ega emas).

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Xato"); $query = "JADVAL YARATISH foydalanuvchilar (login VARCHAR(20), parol VARCHAR(20))"; mysqli_query($query); mysqli_close($link);

SQL so'rovini o'zgaruvchiga yozish shart emas, uni to'g'ridan-to'g'ri mysql_query() funksiyasiga argument sifatida yozish mumkin. Bu shunchaki kodni o'qilishi mumkin bo'ladi.

Ushbu skriptning bitta kamchiligi bor - u brauzerga hech narsa chiqarmaydi. Keling, xabar qo'shamiz:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Xato"); $query = "JADVAL YARATISH foydalanuvchilar (login VARCHAR(20), parol VARCHAR(20))"; if (mysqli_query($query)) echo "Jadval yaratildi."; else echo "Jadval yaratilmadi."; mysqli_close($link);

Agar biz ushbu skriptni qayta ishga tushirsak, brauzerda "Jadval yaratilmagan" degan xabarni ko'ramiz. Gap shundaki, jadval birinchi ishga tushirish vaqtida yaratilgan va yana bir xil nomdagi jadval yaratish mumkin emas. Biz xatolik holatiga duch keldik, shuning uchun MySQL bilan ishlashda xatolarni qayta ishlash haqida gapirish vaqti keldi.

Qayta ishlashda xatolik

Dasturni disk raskadrovka qilishda bizga xato haqida aniq ma'lumot kerak bo'lishi mumkin. MySQL-da xatolik yuz berganda, ma'lumotlar bazasi serveri xato raqamini va uning tavsifi bilan chiziqni o'rnatadi. PHP bu maʼlumotlarga kirish uchun maxsus funksiyalarga ega.

  • mysqli_errno() - xato raqamini qaytaradi.
  • mysqli_error() - xatoni tavsiflovchi satrni qaytaradi.

Endi mysql_error() funksiyasini skriptimizga qo'shamiz:

$link = mysql_connect("localhost", "root", "", "tester"); if (!$link) die("Xato"); $query = "JADVAL YARATISH foydalanuvchilar (login VARCHAR(20), parol VARCHAR(20))"; if (mysqli_query($query)) echo "Jadval yaratildi."; else echo "Jadval yaratilmadi: ".mysqli_error(); mysqli_close($link);

Endi bizning skriptimiz brauzerga qatorni qaytaradi: "Jadval yaratilmagan: "foydalanuvchilar" jadvali allaqachon mavjud."

Jadvalni o'chirish

Shunday qilib, endi bizda kerak bo'lmagan stol bor. Ma'lumotlar bazasidan jadvallarni qanday tushirishni o'rganish vaqti keldi.

Jadvalni tushirish uchun DROP TABLE buyrug'idan keyin jadval nomidan foydalaning.

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Xato"); $query = "JADVAL foydalanuvchilarini DOPLASH"; if (!mysqli_query($query)) echo "Jadvalni oʻchirishda xatolik yuz berdi: ".mysqli_error(); else echo "Jadval o'chirildi."; mysqli_close($link);

Natijalar

Shunday qilib, biz MySQL asoslarini o'zlashtirdik. Biz nima qilishni o'rgandik:

  • mysqli_connect() funksiyasidan foydalanib MySQL ma'lumotlar bazasiga ulaning.
  • mysqli_close() funksiyasidan foydalanib MySQL serveriga ulanishni yoping.
  • mysqli_query() funksiyasidan foydalanib MySQL serveriga SQL so'rovlarini yuboring.
  • Biz jadval yaratish uchun SQL so'rovini o'rgandik: jadval yaratish.
  • Biz jadvalni o'chirish uchun SQL so'rovini o'rgandik: drop table.
  • Biz mysqli_errno() va mysqli_error() funksiyalari yordamida xatolarni qanday hal qilishni o‘rgandik.

Keyin MySQL ma'lumotlar turlarini batafsil ko'rib chiqamiz.

Keyingi darsni o'qing:

Bu nima ekanligini hali ham bilmagan paytlarimni eslayman mysql va tez-tez Internetda bunday maqolalarni qidirdi. Lekin negadir ular kamdan-kam topilgan. Endi men foydali maqolalar bo'lishi uchun bittasini joylashtirishga qaror qildim mysql Va php yana bittasi bor. Men hamma narsani tushunarli tilda yozishga harakat qilaman.

MySQL va PHP bilan boshlash

Shunday qilib, ishlay olishimiz uchun birinchi navbatda bizga mahalliy server kerak php skriptlar va ma'lumotlar bazasiga ulaning (bundan keyin uni JB deb nomlayman, ya'ni "ma'lumotlar bazasi"). Agar sizda hali mahalliy server bo'lmasa, avval "O'rnatish va sozlash" bo'limini o'qishingiz kerak localhost, va keyin ma'lumotlar bazasini o'rganishni boshlang mysql va uning DBMS (ma'lumotlar bazasini boshqarish vositasi).

Agar sizda allaqachon ushbu server bo'lsa, buni bajaring. Birinchidan, men sizni DBMS bilan tanishtirmoqchiman PhpMyAdmin, ma'lumotlar bazasidagi yozuvlarni boshqarish (qo'shish, o'chirish, o'zgartirish) imkonini beradi.

Bu asosiy sahifa DBMS PhpMyAdmin. Bu yerdan siz o'z ma'lumotlar bazasini yaratishingiz va unda kerakli yozuvlarni saqlashingiz mumkin. Bu veb-saytlarni yaratishda juda qulay, chunki ma'lumotlar tuzilgan va siz ma'lumotlar bazasidan istalgan yozuvni juda tez olishingiz mumkin.

Yuqorida aytib o'tilganidek, maqolaning birinchi qismi, kirish mysql Va phpmyadmin. O'ylaymanki, endi siz MySQL nima ekanligini tushundingiz va biz phpmyadmin funksiyasini o'rganishni boshlashimiz mumkin. Boshlash uchun biz ma'lumotlar bazasini o'zi yaratishimiz kerak. Uning o'z ismi bo'ladi, keyin biz uni qidiramiz.

Mana ma'lumotlar bazasining umumiy tuzilishi:

Ma'lumotlar bazasini yaratish uchun "Yangi ma'lumotlar bazasini yaratish" (PhpMyAdmin-ning asosiy sahifasida) qatoridagi kiritish maydoniga kelajakdagi ma'lumotlar bazasi uchun istalgan nomni (kirillcha emas!) kiriting. Men "baza" nomli ma'lumotlar bazasini yarataman. Endi ma'lumotlar bazasi strukturasi diagrammasidan so'ng biz jadval tuzishimiz kerak. Buning uchun ma'lumotlar bazasini yaratgandan so'ng siz quyidagi oynaga ega bo'lasiz:

Bu yerda men foydalanuvchilar nomli jadval va undagi 3 ta maydon yaratyapman. Keyin, phpmyadmin bizdan har bir maydon uchun strukturani o'rnatishimizni so'raydi:

Bu erda "Maydon" ustunida siz nomni ko'rsatishingiz kerak, "Tip" da biz u erda saqlanadigan ma'lumotlar turini ko'rsatamiz (INT - raqam, VARCHAR - satr yoki kichik(!) matn). "Kengaytirilgan" da biz "id" nomli maydonga "auto_increament" parametrini ko'rsatamiz, ya'ni har qanday ma'lumot kiritganingizda u ko'payadi va biz unga "Birlamchi kalit" parametrini o'rnatamiz (doira qo'ying), bu shuni anglatadiki birinchi ustunga ko'ra biz maydonni yagona aniqlashimiz mumkin.

"Maydonni yagona aniqlash" degani, ism va familiya bir xil bo'lsa ham, "id" ustuni turli qiymatlarga ega bo'lishini anglatadi (chunki u har safar avtomatik ravishda bittaga oshiriladi).

Endi "Saqlash" tugmasini bosing. Shunday qilib, biz foydalanuvchilar ma'lumotlar bazasida ism va familiyani (idni kiritishning hojati yo'q, MySQL biz uchun hamma narsani qiladi) saqlashimiz mumkin bo'lgan foydalanuvchilar jadvalini yaratdik. Biz yozuvlarni saqlash uchun jadval yaratdik. Ularni u erga qanday kiritish kerak? Quyida o'qing 😉

Menyudan "Qo'shish" ni tanlang va kerakli maydonlarga kerakli qiymatlarni yozing. Endi PhpMyAdmin DBMS yordamida MySQL maʼlumotlar bazasidagi qiymatlarni qanday oʻchirish yoki oʻzgartirish mumkin... Oʻchirish uchun “Browse” menyusiga oʻting va yozuv yonidagi qizil xochni bosing:

Va tahrirlash uchun qalam ustiga bosing va kerakli maydonlarni almashtiring. Xo'sh, bu darsning oxiri. Endi siz PhpMyAdmin yordamida MySQL ma'lumotlar bazasini boshqarishingiz mumkin. Keyingi darsda ma'lumotlar bazasidagi ma'lumotlarni saqlash, olish, o'chirish va yangilashni o'rgataman php yordamida. Bu juda qulay va amaliy.

Php dan MySQL ma'lumotlar bazasi bilan ishlash

Shunday qilib, avval siz allaqachon yaratilgan ma'lumotlar bazasiga qanday ulanishni o'rganishingiz kerak. Buning uchun quyidagi koddan foydalaning:

Yuqoridagi kodda login yordamida localhost serveriga ulandim ildiz parolni talab qilmaydigan (shuning uchun biz uni belgilamaymiz). Ma'lumotlar bazasiga ulangandan so'ng, biz phpmyadmin DBMS da bajargan barcha operatsiyalarni bajarishimiz mumkin. Ya'ni, turli ma'lumotlarni kiritish, o'chirish, o'zgartirish va olish. Endi nuqtama-nuqta:

PHP da SQL ma'lumotlar bazasiga yozuvlarni kiritish

$query="INSERT INTO `jadval` (`maydonni belgilang`,`maydonni belgilang`) VALUES ("har qanday qiymat", "har qanday qiymat""); $natija=mysql_query($query); if($result==true) (echo "Muvaffaqiyat!"; ) else ( aks-sado "Xato!
".mysql_error(); )

Ya'ni, kiritish INSERT funktsiyasi tomonidan amalga oshiriladi. Agar hamma narsa yaxshi bo'lgan bo'lsa, MySQL natijani rost yoki aks holda noto'g'ri deb qaytaradi.

Siz xohlagancha ko'p maydonlarni belgilashingiz mumkin, asosiysi ularning barchasi ma'lumotlar bazasida mavjud. Ya'ni, masalan, "ism", "familiya" va "shahar" maydonlari mavjud bo'lgan jadval mavjud. Unga qiymatlarni kiritish uchun biz quyidagi koddan foydalanamiz:

$query="INSERT INTO `foydalanuvchilar` (`ism`,`familiya`,`shahar`) VALUES ("Ruslan","Huzin","Kokshetau""); $natija=mysql_query($query); if($result==true) (echo "Muvaffaqiyat!"; ) else ( aks-sado "Xato!
".mysql_error(); )

PHP da SQL ma'lumotlar bazasidan yozuvlarni o'chirish

O'chirish DELETE funksiyasi yordamida amalga oshiriladi. Buning uchun kod shunday bo'ladi:

$query="DELETE FROM `users` WHERE `name`="Ruslan" "; $natija=mysql_query($query); if($result==true) (echo "Muvaffaqiyat!"; ) else ( aks-sado "Xato!
".mysql_error(); )

Ya'ni, foydalanuvchilar jadvalidan nom ustuni Ruslan qiymatiga teng bo'lgan barcha qatorlarni (yoki bittasini) o'chirib tashlaymiz.

Php da MySQL ma'lumotlar bazasidagi qiymatlarni o'zgartirish

Jadvaldagi mavjud yozuvlarga ham o'zgartirishlar kiritishimiz mumkin. Masalan, familiya ustuni Huzin qiymatiga ega bo'lgan qatorda nom ustunining qiymatini almashtirishimiz kerak. Buning uchun biz quyidagi kodni ishga tushiramiz:

$query="UPDATE `users` SET `name`="mening ismim" WHERE `familiyasi`="Huzin" "; $natija=mysql_query($query); if($result==true) (echo "Muvaffaqiyat!"; ) else ( aks-sado "Xato!
".mysql_error(); )

Ma'lumotlar bazasidan qiymatlarni olish

Endi qiziqarli qism keladi. Biz biror narsani yozganimiz uchun uni qaytarib olishimiz kerak, to'g'rimi? Misol uchun, nom ustuni Ruslanga teng bo'lgan foydalanuvchilar jadvalidan butun qatorni olishimiz kerak. Buning uchun bizga birinchi misollardagidan biroz farqli kod kerak bo'ladi. Mana:

$query="SELECT * FROM WHERE `name`="Ruslan" "; $natija=mysql_query($query); if($result==true) (echo "Muvaffaqiyat!"; ) else ( aks-sado "Xato!
".mysql_error(); ) $data=mysql_fetch_array($result); /* Endi oʻzgaruvchi jadvaldagi maʼlumotlarni saqlaydi */

Bu yerda tanlangan maʼlumotlarni phpʼdagi oʻzgaruvchiga (massiv) yozish uchun yana bitta funksiya kerak edi. Tanlangan qatorga kirish uchun biz shunday yozamiz:

$data["ustun nomi"]

ya'ni tanlangan satrdan familiyani olish uchun (bu erda ism Ruslan edi), biz chiqish sifatida yozishimiz kerak:

echo $data["familiya"];

Va jadvaldan tanlashda ular SELECT * deb yozdilar, bu yulduzcha siz qatordan barcha ustunlarni tanlashingiz kerakligini anglatadi. Agar bizga, masalan, faqat familiyani tanlash kerak bo'lsa, biz SELECT `familiya` yozamiz. Jadvaldan bir vaqtning o'zida bir nechta qatorlarni tanlash uchun ularni ko'rsatish uchun tsikl ham kerak bo'ladi. Bu, masalan, Ruslan ustuni bilan bir nechta qatorlar mavjud bo'lsa. Mana kod:

$query="SELECT * FROM WHERE `name`="Ruslan" "; $natija=mysql_query($query); while($data=mysql_fetch_array($result)) ( echo $data["name"]."
".$data["familiya"]."


"; }

Endi ekranda nomi ustuni Ruslan qiymatiga teng bo'lgan barcha qatorlar ko'rsatiladi.

Endi siz asosiy boshqaruv funktsiyalari bilan tanishdingiz mysql ma'lumotlar bazasi to'g'ridan-to'g'ri dan php skripti.

Ushbu maqolada biz o'rganamiz PHP orqali ma'lumotlar bazasi so'rovlarini yuborish. Ushbu maqola juda muhim va siz buni tushunishingiz kerak. Biroq, men sizni ishontirib aytamanki - material juda oddiy, shuning uchun hech qanday qiyinchiliklar bo'lmasligi kerak.

Maqolaning mavzusiga o'tishdan oldin, men batafsil tahlil qilmasligimni oldindan ogohlantiraman SQL tili. Barcha kerakli ma'lumotlar bag'ishlangan toifada ajratilgan, ammo bu erda biz faqat PHP orqali MySQL bilan ishlash.

Endi o'tamiz PHP da ma'lumotlar bazasi so'rovlarini yuborish:


}
$mysqli->query("INSERT INTO mytable (nom, email) VALUES ("Mening ismim", " [elektron pochta himoyalangan]")");
$mysqli->yopish();
?>

Ushbu misolda biz ma'lumotlar bazasiga ulandik, ulanishning muvaffaqiyatini tekshirdik va usul yordamida so'rov yubordik query(), va keyin ulanishni yoping. Ko'rib turganingizdek, hamma narsa juda oddiy. Har qanday yuborish uchun SQL so'rovlari Faqat bitta usul etarli - query(), shuning uchun bu holda hamma narsa juda oddiy.

Endi vazifani biroz murakkablashtiramiz. Qaytgan so'rovlarni ko'rib chiqaylik natija_to'plami- natija. Qaytgan eng mashhur so'rov natija_to'plami jadvaldagi ma'lumotlarning tanlovidir. Quyidagi misolda biz ma'lumotlarni tanlaymiz va natijani ko'rsatamiz:

$mysqli = @new mysqli("localhost", "Admin", "o'tish", "mybase");
agar (mysqli_connect_errno()) (
echo "Ulanish muvaffaqiyatsiz tugadi: ".mysqli_connect_error();
}
$result_set = $mysqli->
esa ($ qator = $result_set->fetch_assoc()) (
print_r($satr);
aks-sado "
";
}
$result_set->yopish();
$mysqli->yopish();
?>

Birinchidan, bu nima ekanligini bir oz tushuntirib beraman. natija_to'plami. Natija_to'plami- bu natija bilan jadval. Ushbu jadvalda yozuvlar to'plami (jadval satrlari) mavjud. Va barcha yozuvlarni ko'rsatish uchun siz jadvalning har bir satrini takrorlashingiz va uni ko'rsatishingiz kerak. Va endi men misol bilan tushuntiraman: so'rov yuborganimizdan so'ng biz yaratamiz natija_to'plami. Keyin biz o'zgaruvchini tsiklda tayinlaymiz qator keyingi satrning qiymati, ya'ni usul qaytaradigan bir o'lchovli massiv fetch_assoc(). Barcha satrlar tugagach, usul fetch_assoc() qaytadi yolg'on, va tsikldan chiqadi. Loop ichida esa faqat disk raskadrovka funksiyasidan foydalanib massivni chiqaramiz print_r(), garchi uni, albatta, yordamida chiqarish mumkin har biriga, lekin endi bu kerak emas.

Keling, qanday ishlashni qisqacha bayon qilaylik natija_to'plami:

  1. Oling natija_to'plami ma'lumotlar bazasiga tegishli so'rov yuborish orqali.
  2. Loopda, har bir iteratsiyada, keyingi qatorni (yozuvni) tayinlang natija_to'plami usuli yordamida fetch_assoc() ba'zi o'zgaruvchan qator. Keyin siz ushbu o'zgaruvchi bilan bir o'lchovli assotsiativ massiv sifatida ishlashingiz mumkin, unda kalitlar jadval maydonlarining nomlari va qiymatlar joriy yozuvga mos keladi.
  3. Yopishga ishonch hosil qiling natija_to'plami usuli yaqin() resurslarni to'kish uchun.

Siz sezganingizdek, usul fetch_assoc() har doim keyingi yozuvni qaytaradi. Ya'ni, birinchi navbatda 1-chi, keyin 2-chi, keyin 3-chi va hokazo. Agar sizda yaxshi dasturlash tajribangiz bo'lsa, bu, albatta, harakat qilishingiz mumkin bo'lgan ichki ko'rsatgich tufayli sodir bo'lishini darhol taxmin qilasiz. U qayerda ishlatiladi? Misol uchun, bu bilan ishlash kerak bo'lganda foydalanish mumkin natija_to'plami Yo'q 1 , A 2 va yana ko'p marta. Xuddi shu so'rovni qayta yaratmaslik uchun siz shunchaki ko'rsatgichni boshiga ko'chirishingiz mumkin. Va keyin siz yana qo'pol kuch ishlatishingiz mumkin natija_to'plami fetch_assoc() usuli yordamida.

Ko'rsatkichning o'rnini o'zgartirish usuli mavjud data_seek() dan butun son oladi 0 oldin " yozuvlar soni - 1", shunga ko'ra, ko'rsatgich parametrga mos keladigan yozuvga joylashtiriladi:

$mysqli = @new mysqli("localhost", "Admin", "o'tish", "mybase");
agar (mysqli_connect_errno()) (
echo "Ulanish muvaffaqiyatsiz tugadi: ".mysqli_connect_error();
}
$result_set = $mysqli->query("Tanlash * mytable FROM");
$natija_to'plami->satr_soni;
esa ($ qator = $result_set->fetch_assoc()) (
print_r($satr);
aks-sado "
";
}
$result_set->ma'lumotlar_izlash(0);
esa ($ qator = $result_set->fetch_assoc()) (
print_r($satr);
aks-sado "
";
}
$result_set->yopish();
$mysqli->yopish();
?>

Ushbu misolda bizda chiqish bor natija_to'plamidagi yozuvlar soni mulkdan foydalanish qatorlar soni. Usul bilan ham tanishdik data_seek(). Ya'ni, biz butun natijani takrorladik, keyin ko'rsatgichni qaytardik 0 yozib oling va natijani yana ko'rib chiqdi.

Ushbu maqolada biz ma'lumotlar bazasiga ulanishni va ulanishni yopishni takrorladik. Va shuningdek, bilib oldim PHP orqali ma'lumotlar bazasini qanday so'rash kerak. O'rgangan, natija_to'plamini qanday olish mumkin va u bilan qanday ishlash kerak. Bu muvaffaqiyatga erishish uchun bilishingiz kerak bo'lgan hamma narsa PHP da MySQL bilan ishlash.

Ushbu maqolada biz SQL so'rovlar tilidan foydalangan holda MySQL ma'lumotlar bazasi jadvallariga kirish usullarini ko'rib chiqamiz. SQL qisqartma bo'lib, u "tuzilgan so'rovlar tili" deb ataladi.
PHP tilida bu maqsadda “mysql” prefiksi bilan bir qator funksiyalar mavjud. So‘rovlarni ko‘rib chiqish uchun bizga ularning ko‘pi kerak bo‘lmaydi. PHP-da SQL so'rovlarini bajarmasdan turib, imkonsiz bo'lgan funksiya:

Resurs mysql_query(so'rov)

Ushbu funktsiya ma'lumotlar bazasiga so'rov yuboradi va agar so'rov muvaffaqiyatli bo'lsa, manba identifikatorini qaytaradi.
MySQL ma'lumotlar bazasiga ulanish uchun siz quyidagi ketma-ketlikni bajarishingiz kerak:

$host="localhost"; // xost nomi (provayder bilan tasdiqlanishi kerak) $database="db_name"; // yaratishingiz kerak bo'lgan ma'lumotlar bazasi nomi $user="user_name"; // siz ko'rsatgan yoki provayder tomonidan belgilangan foydalanuvchi nomi $pswd="your_pass"; // siz ko'rsatgan parol $dbh = mysql_connect($host, $user, $pswd) yoki die("MySQL-ga ulanib bo'lmadi."); mysql_select_db($ma'lumotlar bazasi) yoki die("Ma'lumotlar bazasiga ulana olmayapman.");

Shunday qilib mysql_connect()- hostingdagi MySQL serveriga ulanish funksiyasi.
A mysql_select_db() ulanish uchun serverdagi ma'lumotlar bazasini tanlaydi.
Boshqacha qilib aytganda, biz serverga ulanamiz, ma'lumotlar bazasini tanlaymiz va ishlay boshlaymiz.
Agar xatolik yuzaga kelsa, die() funksiyasi chaqiriladi va brauzer oynasida siz ko'rsatgan xabarni ko'rsatadi.
Ma'lumotlar bazalari bilan ishlashni tugatish uchun funktsiyadan foydalaning:

Mysql_close($dbh);

Bu yerga $dbh- ulanish paytida funksiya tomonidan qaytarilgan deskriptor mysql_connect.
Dastlabki ko'rib chiqishni tugatgandan so'ng, keling, haqiqiy SQL so'rovlarini ko'rib chiqaylik.
Buning uchun birinchi navbatda ma'lum nomga ega ma'lumotlar bazasini yaratish kerak. Va unda ma'lum bir nom bilan jadval yarating. Bizning misollarimizda biz jadvalga murojaat qilamiz my_sql_table. Ushbu jadvalni yaratish uchun mahalliy xostimizning phpmyadmin-da quyidagi so'rovni bajaramiz:

CREATE TABLE `my_sql_table` (`id` INT NOT NULL , // kelajakdagi jadval yozuvlari identifikatori `firstname` VARCHAR(50) NOT NULL , // matn maydoni VARCHAR `familiyasi` VARCHAR(50) NOLL , // maksimal uzunlik 50 belgilar PRIMARY KEY (`id`) // birlamchi kalit - identifikator identifikatori);

Shunday qilib, jadval yaratildi. Keling, birinchi so'rovni bajaramiz, uni darhol PHP kodi shaklida formatlaymiz:

\n"; echo "Ism: ".$row["firstname"]."
\n"; echo "Familiya: ".$row["familiya"]."


\n";) ?>

Keling, faylning PHP kodini tahlil qilaylik firstsql.php. Keling, ma'lumotlar bazasi jadvallariga haqiqiy so'rovdan boshlaylik.

$query = "Tanlash * FROM `my_sql_table`";

Ushbu so'rovni quyidagicha ochish mumkin: jadvaldan tanlang my_sql_table Barcha maydonlardagi barcha yozuvlarni DB. Bu yo'l belgisi * SELECT so'zidan keyin "mutlaqo hamma narsani tanlang" degan ma'noni anglatadi. Shunday qilib, so'rov yaratildi. Endi siz uni bajarishingiz kerak:

$res = mysql_query($query);

Agar so'rov muvaffaqiyatli bo'lsa, funktsiya mysql_query() bizga resurs identifikatorini qaytaradi $res.
Biz uni funktsiyaga parametr sifatida berishimiz kerak mysql_fetch_array(). Ushbu funktsiyaning nomi o'zi uchun gapiradi. Bular. u ma'lumotlar bazasi jadvalidagi namuna asosida massivni hosil qiladi va chiqaradi. Bizning jadvalimiz holatida, massiv jadvaldagi yozuvlar (satrlar) soniga teng bo'lgan bir qator elementlardan iborat bo'ladi va qiymatlarni o'z ichiga oladi. identifikatori, ismi, familiyasi jadvalning har bir qatori uchun. Shunday qilib, quyidagi kod:

while($row = mysql_fetch_array($res)) ( "Raqam: ".$row["id"] aks-sadosi."
\n"; aks-sado "Ism:".$row["firstname"]."
\n"; echo "Familiya:".$row["familiya"]."


\n";)

quyidagicha izohlash mumkin: biz kiritgan $ qator o'zgaruvchisi esa funktsiyadan nolga teng bo'lmagan natijalarni oladi mysql_fetch_row maydon qiymatlarini brauzerga chiqarishingiz kerak $row["id"], $row["firstname"], $row["familiya"] yordamida aks-sado.
Agar so'rov quyidagicha bajarilsa:

$query = ""my_sql_table"DAN ismni tanlang";

u holda bu barcha qatorlardan faqat nom maydonining qiymatlari tanlanganligini anglatadi.
Shuning uchun oldingi kodni quyidagicha qayta yozish kerak:

$res = mysql_query($query); while($row = mysql_fetch_array($res)) ( "Ism:".$satr["firstname"] aks-sadosi."
\n";)

Agar siz ma'lum qiymatga ega jadval qatorlarini tanlamoqchi bo'lsangiz id familiyasi qayerda bo'ladi Petrov, keyin so'rov quyidagicha qayta yoziladi:

$query = ""my_sql_table" dan identifikatorni tanlang, bu erda familiya="Petrov"";

Ammo agar siz raqamlangan shaxsning familiyasini bilishingiz kerak bo'lsa, masalan, 5, so'rov quyidagicha bo'ladi:

$query = "FROM `my_sql_table` familiyasini tanlang, bunda id=5";

Bunday holda, so'rov natijasi jadvaldan faqat bitta qator bo'lishini bilasiz. Bular. yordamida loopni tashkil qilishda hech qanday nuqta yo'q esa. Va so'rovni qayta ishlash quyidagicha bo'ladi

$res = mysql_query($query); $satr = mysql_fetch_row($res); echo "Ro'yxatdagi beshinchi shaxsning familiyasi ".$satr".\n";

Bu erda biz mysql_fetch_array() o'rniga foydalandik mysql_fetch_row(). Bular. ma'lum bir qatorning maydoni (yoki maydonlari) qiymatini oling. Bizda bitta maydon - familiya bo'lganligi sababli, biz $ qator massivining yagona elementiga murojaat qilishimiz mumkin $ qator;.

Shunday qilib, keling, MySQL so'rovlarining eng tipik misollarini ko'rib chiqaylik. Jadval asosida ko'rib chiqamiz my_sql_table:
1. my_sql_table jadvaliga o'rta_ism (o'rta nom) maydonini keyin qo'shing familiya:

$query = "JADVALNI ALTER `my_sql_table` `middle_name` QO`SHING
VARCHAR(50) `familiya` dan keyin NULL EMAS";

2. Endi my_sql_table jadvalidan familiya maydonini olib tashlaymiz:

$query = "ALTER TABLE `my_sql_table` DROP `familiya`";

3. my_sql_table jadvalidan Sidorov familiyasi bilan yozuvlarni o'chiring:

$query = "my_sql_table" dan o'chirish, bu erda familiya = "Sidorov"";

4. MySQL so‘rovlar tilida “kattaroq” yoki “kichikroq” belgilariga qo‘shimcha ravishda “tug‘uncha” ham mavjud. o'xshash". My_sql_table jadvalidan yozuvlarni tanlaymiz, bu erda familiya mavjud " dor" :

$query = "Tanla * FROM `my_sql_table` bu erda familiya "%dor%" kabi";

Bu erda mavjudligi " % " "dor" ning boshida va oxirida va so'rov aynan "dor" ni izlashini bildiradi va familiyaning boshida, oxirida yoki o'rtasida bo'lishi muhim emas. Quyidagi misolni ko'rib chiqing.
5. my_sql_table jadvalidan familiyasi bilan boshlanadigan yozuvlarni tanlang P. Iltimos, manzilga e'tibor bering " % ":

$query = "Tanla * FROM `my_sql_table` bu erda familiya "P%" kabi";

6. Maksimal qiymatni hisoblang id:

$query = "my_sql_jadvalidan MAX(id)ni tanlang";

7. my_sql_table familiyasi bilan boshlanadigan maydonlar sonini hisoblang P.

$query = "my_sql_table"DAN COUNT(*) TANI TANGLASH, bu erda familiya "P%" kabi";

8. my_sql_table jadvalini o‘chirish:

$query = "JADVALNI TO'CHIRISH `my_sql_table`";

PHP-da 1-3 so'rovlar uchun so'rovni bajaring:

Mysql_query($query);

Biz so'rovlarning eng tipik misollarini ko'rib chiqdik. Ishonamanki, ularning yordami bilan elementar mantiqqa amal qilib, siz yaratgan MySQL ma'lumotlar bazasi jadvallariga nisbatan murakkabroq so'rovlarni bajarishingiz mumkin bo'ladi.




Agar sizda boshqa savollar bo'lsa yoki biror narsa aniq bo'lmasa - bizning sahifamizga xush kelibsiz