linkedin facebook linkedin facebook nod32

PHP da ma’lumotlar bazalari bilan ishlash

Muallif: Mengliyev Sh.

Qo`shilgan sana: 2015-08-27

PHPda ma’lumotlar bazalari bilan ishlash

Ma’lumotlar bazasi haqida tushuncha
Ushbu bo‘lim PHP va MySql MBBS o‘rtasidagi hamkorlik usullari bilan tanishishga mo‘ljallangan. Asosiy e’tibor ma’lumotlar bazasi bilan bog‘lanishni o‘rnatish, so‘rovlar jo‘natish funksiyalari va javoblarni (mysql_connect, mysql_query, mysql_result, mysql_num_rows, mysql_close) qayta ishlashga qaratiladi. Misol sifatida virtual tarix muzeyi ma’muriyati uchun web-interfeys tuzish masalasini ko‘raylik. PHP distributivida MySQL ma’lumotlar bazasi bilan ishlash uchun mo‘ljallangan funksiyalar mavjud. Bunda bu funksiyalarning MySql dagi ba’zi bir ma’lumotlar bazasini tasvirlash va to‘ldirish maqsadida web-interfeyslarni tuzish imkonini beruvchi funksiyalar bilan tanishamiz. Ma’lumotlar bazasiga ma’lumotlarni qo‘shish uchun web-interfeys bilan ishlashda bu ma’lumotlarni shunchaki html-formaga kiritish va ularni serverga jo‘natish kerak bo‘ladi. Namoyish etishda bu interfeysni virtual muzey eksponatlari haqidagi ma’lumotlar saqlanadigan Artifacts jadvallari uchun tuzamiz. Artifacts kolleksiyasidagi har bir eksponat quyidagi xarakteristika yordamida tasvirlanishini eslatib o‘tamiz:
nom (title);
muallif (author);
ifoda (description);
o‘rindosh nom (alternative);
tasvir (photo).

Nomlanish va o‘rindosh nomlanish uzunasiga 255 belgidan kam satr (ya’ni VARCHAR(255)), tasvirlash – matnli maydon (TEXT turiga mansub) hisoblanadi, “muallif” va “tasvir” maydonlarida esa Persons kolleksiyasidan muallifning identifikatorlari va Images kolleksiyasidan eksponat tasvirlariga muvofiq mavjud bo‘ladi.

Ma’lumotlar bazasi interfeysi
Ma’lumotlar bazasidagi mavjud jadval strukturasini (ya’ni uning maydonlari jamlanmasini) html-formada tasvirlash uchun quyidagi tarkibiy topshiriqlarni rejalashtirish mumkin:

1. MB bilan ulanishni o‘rnatish;
2. MB ishini tanlash;
3. Jadval maydonlari ro‘yxatini olish;
3. html-formada maydonlarni tasvirlash

Bundan keyin formaga kiritilgan ma’lumotlarni ma’lumotlar bazasiga kiritish mumkin.

Ma’lumotlar bazasi bilan bog‘lanish (MySQL dasturi misolida)

Aloqa o‘rnatish

Ma’lumotlar bazasi bilan aloqa o‘rnatish uchun mysql_connect funksiyasidan foydalaniladi.

mysql_connect sintaksisi mysql_connect resursi (“server qatori”, “username”, “password”) bu funksiya MySQL serveri bilan aloqa o‘rnatadi va bu aloqaga ko‘rsatkich qaytaradi yoki muvaffaqiyatsiz chiqqanda FALSE ko‘rsatadi. Odatda quyidagi parametrlar qiymati e’lon qilinadi:
server = 'localhost:3306'
username = server jarayoni egasidan foydalanuvchi ismi
password = bo‘sh parol
Server bilan ulanish, agar u bungacha mysql_close() yordamida yopilmagan bo‘lsa, skriptni amalga oshirish tugallanishida baza bilan aloqa yopiladi.
Misol:
<?
$conn = mysql_connect("localhost", "admin","12345") or die("Ulanishni amalga oshirib bo‘lmaydi: ". mysql_error());
echo "Ulanish amalga oshdi";
mysql_close($conn);
?>
mysql_connect amali
shell>mysql -u nina -p123 buyrug‘i bilan teng kuchli.

Ma’lumotlar bazasi ustida amallar

Ma’lumotlar bazalarini tanlash
MySQL da ma’lumotlar bazasini tanlash use buyrug‘i yordamida amalga oshiriladi:
mysql>use book;
PHP da buning uchun mysql_select_db funksiyasi mavjud.
mysql_select_db: sintaksisi
mantiqiy mysql_select_db (database_name qatori);
Bu funksiya TRUE qiymatni ma’lumotlar bazasini muvaffaqiyatli tanlanganda qaytaradi va FALSE ni esa – aksincha bo‘lganda.
Misol: Book ma’lumotlar bazasini tanlash
<?

$conn = mysql_connect("localhost","admin","12345") or die("Ulanishni amalga oshirib bo‘lmaydi: ". mysql_error());
echo "Ulanish amalga oshdi";
mysql_select_db("book");
?>
Jadval maydonlari ro‘yxatini olish
PHP da ma’lumotlar bazasi bilan bog‘lanilgandan so‘ng, undagi jadvallar ro‘yxatini
olish mumkin. Bu funksiya - mysql_list_fields.
mysql_list_fields sintaksisi
mysql_list_fields (database_name qatori, table_name qatori)
mysql_field_name funksiyasi so‘rov amalga oshirilishi natijasida olingan maydon nomini qaytaradi. mysql_field_len funksiyasi maydon uzunligini qaytaradi.

mysql_field_type funksiyasi maydon tipini qaytaradi, mysql_field_flags funksiyasi esa probel bilan yozilgan maydon bayroqlari ro‘yxatini qaytaradi. Maydon tiplari int, real, string, blob va h. bo‘lishi mumkin. Bayroqlar not_null, primary_key, unique_key, blob, auto_increment va h. bo‘lishi mumkin.

Bu barcha buyruqlar sintaksisi bir xil:

mysql_field_name (result qatori, butun field_offset) resursi;
mysql_field_type (result qatori, butun field_offset) resursi;
mysql_field_flags (result qatori, butun field_offset) resursi;
mysql_field_len ( result qatori, butun field_offset)
Bu erda result – bu so‘rov natijasi identifikatori (masalan, mysql_list_fields yoki mysql_query funksiyalar bilan jo‘natilgan so‘rov), field_offset esa – natijadagi maydonning tartib raqami.
mysql_num_rows(result resursi) buyrug‘i result ning ko‘pgina natijalari qatorlari
miqdorini qaytaradi.
Misol: Artifacts (eksponatlar kolleksiyasi) jadvali maydonlari ro‘yxatini olish.
<?
$conn = mysql_connect("localhost","root","parol yozmang") or die("Aloqa o‘rnatib bo‘lmaydi: ". mysql_error());
echo "Aloqa o‘rnatildi"; mysql_select_db("book");
$list_f = mysql_list_fields ("book","Artifacts",$conn);
$n = mysql_num_fields($list_f);
for($i=0;$i<$n; $i++){
$type = mysql_field_type($list_f, $i);
$name_f = mysql_field_name($list_f,$i);
$len = mysql_field_len($list_f, $i);
$flags_str = mysql_field_flags ($list_f, $i);
echo "<br>Maydon nomi: ". $name_f;
echo "<br>Maydon turi: ". $type;
echo "<br>Maydon uzunligi: ". $len;
echo "<br>Maydon bayroqlari qatori: " . $flags_str . "<hr>";
}
?>
Natija sifatida taxminan quyidagilarni olish mumkin (albatta, jadvalda ikkita maydon bo‘lganda):

1. Maydon nomi: id
1.2. Maydon turi: int
1.3. Maydon uzunligi: 11
1.4. Maydon bayroqlari qatori: not_null primary_key auto_increment
2. Maydon nomi: title
2.1. Maydon turi: string
2.2. Maydon uzunligi: 255
2.3 Maydon bayroqlari qatori:

html-formada maydonlar ro‘yxatining aks etishi
Maydon haqidagi ma’lumotni html-forma elementida aks ettiramiz. BLOB turidagi elementlarni textarea ga o‘tkazamiz (TEXT turida biz tuzgan description maydoni BLOB tipiga ega), raqamlar va qatorlarni <input type=text> matnli qatorlarida aks
ettiramiz, avtoinkrement belgisiga ega elementni esa umuman aks ettirmaymiz, chunki uning ma’nosi o‘z-o‘zidan o‘rnatiladi.
Buning uchun explode funksiyasidan foydalaniladi:
explode: sintaksisi
explode massivi (separator qatori, string qatori , int limit)
Bu funksiya string qatorini separator taqsimlagichi yordamida qismlarga bo‘ladi va olingan qatorlar massivini qaytaradi.

Bizning holatda taqsimlagich sifatida probel “ ” ni olish kera, bo‘lish uchun
boshlang‘ich qator sifatida esa – maydon bayroqlari qatorini.
Misol. Artifacts jadvaliga ma’lumot kiritish uchun forma (index.php)
<?php
$dblocation = "localhost";
$dbname = "book";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
@mysql_select_db($dbname,$dbcnx);
if(isset($_POST['save_hide'])) {
$title=($_POST['title']);
$query = "INSERT INTO Artifacts (title) VALUES ('$title')";
if(@mysql_query($query))
{echo     "<HTML><HEAD><META     HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD></HTML>";
} else { print mysql_error(); error("Ma’lumotni bazaga ezishda xatolik");}
} else {
?>
<TABLE width="100%" align=center border=0><TR><TD>
<form method="POST" name="save" action="" enctype="multipart/form-data" >
<input type=hidden name=save_hide value=save_hide>
<TABLE width="100%" align=center border=0><TR>
<TD>Eksponat nomini kiriting </TD>
<TD><INPUT class="input" size=“35” name=“title” value=""></TD>
</TR></TABLE>
<input type="submit" value="Saqlash" class="batton" />
</form></TD></TR></TABLE>
<? } ?>
Ma’lumotlar bazasiga ma’lumotlar yozish
Ma’lumki, ma’lumotlarni jadvalga yozish uchun SQL tilidagi INSERT buyrug‘i
ishlatiladi:

mysql> INSERT INTO Artifacts SET title='Eksponat nomi'; PHP skriptda bunday buyruqdan foydalanish uchun mysql_query() funksiyasi mavjud.
mysql_query sintaksisi
mysql_query resursi (query qatori)
mysql_query() SQL-so‘rovni MySQL ma’lumotlar bazasining ma’lumotlar bazasiga jo‘natadi. Agar ochiq aloqa bo‘lmasa, funksiya parametrsiz mysql_connect() funksiyasiga o‘xshash holda MBBT bilan bog‘lanishga urinadi. So‘rov natijasi buferlanadi.

5591 marta o`qildi.

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений