ma`lumotlar bazasi. Soddaroq qilib aytganda
MYSQL-bu uy, jadvallar esa bu uydagi xonalar.
Mysql ni uy ko`rinishda tasvirlasa tushunish
oson boladi shuning uchun shu yolda davom
etamiz. Mysql da siz jadvallarga xar hil hajm berishingiz mumkin. Xuddi uydagi xonalar kabi.
Xar bir jadval ustun va satrlardan iborat bo`ladi.
Masalan: Bizga o`quvchilarni ism va familiya
yoziladigan jadval kerak. Uning uchun biz oldin
Ism va familiya nomi bilan 2 ta ustun tuzamiz va
o`quvchilarni ism,familiyasini yangi satrga qo`shib boraveramiz
Ism Familiya
Shavkat Ibrohimov
Sunnat Saydullayev
Tohir Sodiqov
Ma`lum bir bazaga jadval qo`shish uchun Create table `jadvalnomi`(
Jadval elementlari(maydon)
)
Oddiy misol. Yuqoridagi o`quvchilar jadvalini
tuzamiz. Jadvalga esa `list` deb nom beramiz:
CREATE TABLE `list` ( `id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`familiya` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Endi shu sorovni chochib chiqamiz: `list` jadvalini tuzamiz(
`id` - maydoni uzunligi max 5 ta simvoldan
iborat va identifikator avtomatik qo`yilish
hususiyatiga ega maydon. Not Null esa u bo`sh
emasligini bildiradi. Int() – faqat son degani.
Ya`ni id maydoni max 5 ta simvoldan iborat va faqat son ko`rinishidagi ma`lumotni qabul qila
oladi.
Auto_increment – bu jadvalga yangi bir
ma`lumot qo`shilganda shu ma`lumotga id
maydoni avtomatik tarza ketma ketlik bo`yicha
yangi identifikator beradi. `name` - maydoni max 100 ta simvolga ega
bolgan xam son xam harf aralashmasidan iborat
bolgan maydon u ham bo`sh emas. Varchar() bu
lyuboy ma`lumotni qabul qiladi faqat () lar
ichidagi simvollar sonidan oshmasligi kerak
`familiya` - huddi name dek. PRIMARY KEY(`id`) – bu Jadvalni asosiy kaliti `id`
maydoni ekanligi va faqat u auto incrementni
qo`llashi mumkinligi haqida. Agar qaysi maydon
auto_increment ni qo`llasa usha maydon primary
key bo`lishi lozim.
ENGINE=MyISAM DEFAULT CHARSET=utf8 - Bu yerda Engine – bu bazani sozlamasi desaham
boladi, U MyIsam qiymatga ega. Normal
jadvalda shunday bo`ladi. DEFAULT CHARSET bu
jadval kodirovkasi va u utf8 bilan belgilangan.
Xo`sh jadval ham tuzildi. Endi unga ma`lumot
yozish lozim. Tasavvur qiling sinfga yangi o`quvchi keldi va siz uni shu jadvalga kiritib
qo`ymoqchisiz. Buning uchun sql da
Insert into `jadvalnomi` set
`maydon`=`qiymat`,`maydon`=`qiymat` …. ;
Ko`rinishida bo`ladi. Sinfga Rustamov Azamat
keldi deb uni jadvalga qo`shamiz: insert into `list` set `name` = 'Azamat', `familiya`
=
'Rustamov';
Kodni tahlil qilsak:
`list` jadvaliga qo`shamiz `name`(maydoniga)
=’Azamat’, `familiya`(maydoniga)=’Rustamov’; Har bir buyruq tugagandan so`ng “;” belgisi
qo`yish sedan chiqmasin. Maydonlarga qiymat
berishda orada “,” ni ishlating xuddi
yuqodiragidek: `name` = 'Azamat' , `familiya` =
'Rustamov';
Endi list jadvalida bizda yangi malumot qo`shildi. Endi Shu Azamat sinfdan ketdi uni
bazadan o`cherish kerak. Buning uchun:
Delete from `jadvalnomi` where
`maydon`=’qiymat’;
Azamatni o`cherish kodi quyidagicha bo`ladi:
Delete from `list` where `name`= 'Azamat' and `familiya` = 'Rustamov' limit 1;
Ya`ni: Siz jadvalga quyidagi tarzda so`rov
yuborayapsiz: `list` jadvalidan `name` =
‘Azamat’
va `familiya` = ‘Rustamov’ qiymatga ega bolgan
maydonni o`chirib tashla faqat 1 tasini; limit – bu chegara degani.
38 sekunt dan so'ng yozdi:
Endi sinfdagi Sodiqov Abror nomli o`quvchini
ismi Asqar ga o`zgardi siz jadvaldagi
ma`lumotni ham o`zgartirishingiz kerak bo`lsa u
holda quyidagi operatordan foydalanasiz: Update `jadvalnomi` set `maydon`=’qiymat’ ,
`maydon`= ’qiymat’ … where
`maydon`=’qiymat’;
Ko`rinishda boladi:
Update `list` set `name` =
'Asqar',`familiya`='Sodiqov' where `name` = 'Abror' and `familiya`='Sodiqov' limit 1;
Ya`ni:
`list` jadvalida `name` = ‘Abror` va `familiya` =
‘Sodiqov’ qiymayiga ega bolgan maydonni
yangila va unga ‘name` = ‘Asqar` va `familiya` =
‘Sodiqov’ qiymatini belgila Ko`rinishida buyruq berdingiz.
Eng kerakligi: Biror jadvalda qandaydir qiymatga
ega bolgan maydonni tanlashda select
operatoridan foydalaniladi, * belgisi sedan
chiqmasin:
Select * from `jadvalnomi` where `maydon`=’qiymat’;
Masalan `list` jadvalidan Asqar nomi o`quvchini
tanlashda :
Select * from `list` where `name` = ‘Asqar’ limit
1;
Bu Asqar nomli oquvchini bazadan faqat 1 tasini chiqarib beradi. Hammasini chiqarish uchun
limit 1 sozini olib tashlash kifoya : Select * from
`list` where `name` = ‘Asqar’;
Xullas wapda dasturlash uchun mysql haqida
shu ma`lumotlarni o`zi yetarli deb oylayman
chunki bu fundament qolganiga esa o`zingiz harakat qiling aks holda dangasa bo`lib qolasiz.
PHP VA MYSQL
PHP da mysql ni o`rni beqiyosdir chunki katta
hajmdagi m`alumotlarni saqlash va taxrirlash
uchun mysql ayni muddao. Endi ishni
boshlaymiz. 1- Qoida – php script mysql baza bilan
ishlayotganda u doim mysql bilan ulangan
bo`lishi kerak.
Php skriptni mysql bazaga bog`lash uchun:
<?
$host = ‘hostnomi’; $user = ‘Mysql foydalanuvchi nomi’;
$pass = ‘Mysql ga kirish uchun parol’;
//MYSQL quyidagi korinishda ulanamiz, agar
bazaga ulanmasa u holda xatolikni chiqaramiz:
$db = mysql_connect($host,$user,$pass) or die
("MYSQL ulanishda xatolik:<br>".mysql_error ().exit());
//bazaga omadli ravishda ulangandan song
kerakli bazaga ulanamiz:
mysql_select_db($bd, $db) or die("Bazaga
bog`lanishda xatolik:<br>".mysql_error().exit());
?> Php skriptingiz baza bilan doim ulanib ish qilishi
uchun shu kodlarni alohinda db.php fayliga
saqlang baza bilan birga ishlaydingan
skriptningiz fayllariga include() qilib chiqing yani
faylni qo`shing.
Baza bilan ishlashda eng kerakli operator bu mysql_query(); dir. Tarjimasi mysql_sorov
boladi.
Oddiy sorov `list` jadvalidan barcha
malumotlarni chiqarish tanlash uchun:
$sql = mysql_query(“select * from `list`”);
Endi shu jadvalda ma`lumotlar bormi shuni tekshirish uchun mysql_num_rows() ishlatiladi
bu operator sql sorovda bajarilgan sorovni
nechtaligini sanaydi;
$num = mysql_num_rows($sql);
Ya`ni yuqoridagi sql sorovni raqamlab sanaydi
Agar $num 0 dan katta bolsa malumot bor aks xolda jadval bo`sh bo`ladi.
Jadvalda ma`lum bir qiymatga ega bolgan
ma`lumotlarni sanashda mysql_result()
ishlatiladi.
$result = mysql_result(mysql_query(“select count
(*) from `list`”),0); Endi asosiy ishga o`tamiz.
5 minut dan so'ng yozdi:
CREATE TABLE `list` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`familiya` varchar(100) NOT NULL, PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Jadvalini tuzamiz. Va bu jadvalga 3 – 4 ta
ma`lumot qo`shamiz. Siz buni qanday qilishni
bilasiz. Yuqorida yozilgan;
Xullas ma`lumotlarni ekranga chiqarish kerak: Sorov bajarilgandan song natijani barchasini
ekranga chiqarish uchun mysql_fetch_array()
operatori sikl ostida ishlatiladi.
Masalan
$sql = mysql_query(“select * from `list`”);
while($fetch=mysql_fetch_array($sql)){ echo $fetch[‘name’].’|’.$fetch[‘familiya’].’<br/>.’;
}
Bu yerda `list` jadvalidan barcha ma`lumotlarni
tanladik va undagi maydonlarni massivlarga
aylantirib barchasini ekranga chiqaridik Nomi|
Familiya ko`rinishida. Formadan kiritilgan ma`lumotni jadvalga yozish:
Buning uchun bizga bitta id va bitta text nomli
jadval kerak bo`ladi, id da auto_increment
xususiyati yoqilgan bo`lishi shart. Bu jadvalni
o`zingiz tuzing!!!
Bu unchalik qiyin emas, lekin bir narsani yodda tutish kerakki bazaga ma`lumot yozayotganda
uni maxsus mysql_real_escape_string()
funksiyasida ma`lumotni filtrlash lozim va
shundagina ma`lumot bazaga havfsiz
ko`rinishda yoziladi, va yana bir narsa bazadan
ma`lumotni chiqarayotgan paytda shu matnni ya`ni ma`lumot matnini htmlspecialchars()
yordamida filtrlar so`ngra ekranga chiqarish
lozim, xar ehtimolga qarshi
Xo`sh endi ishni boshladik. Birinchi bo`lib
index.php fayliga formani tuzib olamiz.
<? //bazaga ulanib olamiz
include(‘db.php’);
// yoz.php fayliga formadagi ma`lumotlarni
uzatamiz:
echo ‘<form action = “yoz.php” method =
“post”> Matn:<br/>
<textarea name = “matn”></textarea><br/>
<input type = “submit” value = “Jo`natish”></
form>’;
?>
Yuqoridagi komentariy bo`yicha yozilganda biz index.php da kiritilgan formadagi ma`lumotlarni
yoz.php fayliga uzatamiz va uni filtrlab so`ngra
bazaga kiritamiz.
Demak hozir bir yoz.php fayliga shunday kor
yozishimiz kerakki u kod orqali ma`lumotlarni
filtrlar so`ngra bazaga kiritishimiz lozim. Keling kod yozishda oldin shu yozmoqchi bo`lgan korni
algoritmini tuzib olamiz:
1)Ma`lumotlar qaysi usulda jo`natilgan bo`lsa
shu usulda qabul qilib olamiz(POST yoki GET).
2)Ularni mysql_real_escape_string() funksiyasi
orqali filtrlaymiz. 3) Ma`lumotlarni bazaga kiritamiz.
Bor yo`g`I 3 ta qadam:
<?
Include(‘db.php’);
//1-qadam
$matn = $_POST[‘matn’]; //2 - qadam
$matn = mysql_real_escape_string($matn);
//3-qadam
$sorov = mysql_query(“insert into `text` set
`text` = ‘”.$$matn.”’”);
If($sorov) { Echo ‘Ma`lumotlar omadli ravishda bazaga
kiritildi’;
}
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Нет комментариев