Professional Documents
Culture Documents
PHP ve MySQL
Burada sadece MySQL program ile veritaban
oluturmakla kalmayalm, bir anlamda SQL
Ders 6 diline de ok ksa bir giri yapalm.
SQL, (Structured Query Language, Yapsal
Sorgu Dili) veritaban endstrisinin standart
dilidir.
1 2
3 4
5 6
1
Tablo oluturma Tablo detaylar
CREATE TABLE uyeler ( adi VARCHAR(30),
soyadi VARCHAR(30), mysql> CREATE TABLE ziyaretciDefteri (autoID int(10) unsigned not null
uye_no INT ) ; -> auto_increament primary key, name varchar(64), email varchar(64),
Bu komutla, "uyeler" isimli stunlu bir tablo oluturulur: birinci ve ikinci -> comment text, date_auto int unsigned);
stunlarda en fazla 30, karakterlik deien boyutta alfanmerik deerler yer alrken,
nc stunda sadece tam say olan deerler bulunabilir.
Oluturulmu tablo bilgileri
mysql> describe ziyaretciDefteri;
describe tablo_ismi +-----------+------------------+------+-----+---------+----------------+
ile grntlenir. | Field | Type | Null | Key | Default | Extra |
Tablo oluturulurken bir tane PRIMARY KEY, birincil anahtar tanmlanr. +-----------+------------------+------+-----+---------+----------------+
PRIMARY KEY | autoID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(64) | YES | | NULL | |
Baz deerlerin otomatik olarak atanmas istenebilir, bunun iin | email | varchar(64) | YES | | NULL | |
AUTO_INCREMENT | comment | text | YES | | NULL | |
zellikleri tablo oluturulurken atanr. | date_auto | int(10) unsigned | YES | | NULL | |
Tabloya veri girii srasnda bo braklan yerlere varsaylan deerlerin atanmas +-----------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
istenebilir. Bu durumda DEFAULT anahtar kelimesi kullanlr.
7 8
9 10
11 12
2
MySQL Komutlar
ORDER BY
SELECT alan FROM tablo WHERE alan ART deer
SELECT * FROM Adresler WHERE adres LIKE "%ik%" SELECT column_name(s) FROM table_name
SELECT * FROM Adresler WHERE adi BETWEEN A AND D ORDER BY column_name DESC;
Operatr art Buradaki DESC azalan ekilde anlamna
= Eittir gelmektedir.
<> Eit deil Bu anahtar kelime kullanlmazsa artan srada bir
> Byktr
sralama gerekletirilmektedir.
< Kktr
SELECT column_name(s) FROM table_name
>= Byk yada eittir
ORDER BY column_name1, column_name2;
<= Kk yada eittir
(NOT) BETWEEN .. AND .. Belirli deerler arasnda
LIKE Belirli bir karakter dizisi aranr.
13 14
15 16
3
MySQL Fonksiyonlar
MySQL Fonksiyonlar
Komut Aklama
MIN(stun) Stundaki en kk deeri seer.
Komut Aklama MAX(stun) Stundaki verilerin en byn seer.
ATAN(X) Xin tanjantn hesaplar SUM(stun) Stundaki deerleri toplar
ATAN(X,Y) Y/X in tanjantn hesaplar AVG(stun) Stundaki deerlerin ortalamasn hesaplar
COS(X) Xin cosinsn hesaplar COUNT(stun) Stundaki veri saysn verir
SIN(X) Xin sinsn hesaplar STDDEV(stun) Stundaki verilerin standart sapmasn verir
COT(X) Xin cotanjantn hesaplar VARIANCE(stun) Stundaki verilerin varyansn verir
TAN(X) Xin tanjantn hesaplar
SELECT COUNT(no_1) AS sayi from tablo;
Select 2+2; SELECT AVG(no_1) AS ortlama from tablo;
Select cos(sutun_1) As ortalama From tablo; SELECT STDDEV (no_1) AS std from tablo;
19 20
23 24
4
Veritaban seme Veritabannda sorgulama
Balant baaryla kurulduktan sonra PHP program, bu yoldan, veritaban
sunucusuna, hangi veritaban dosyasndan yararlanmak istediini bildirmelidir. Veritabannda sorgulama yapmak iin mysql_query() fonksiyonu kullanlr:
Buna veritaban dosyas seme ilemi denir ve mysql_select_db() fonksiyonu
ile yaplr: $sorgu="SELECT * FROM person";
mysql_select_db( "veritabann_ad", $veri_yolu ) $result = mysql_query($sorgu, $veri_yolu );
or die ("Veritaban alamyor!".mysql_error() ); Gelen verileri $result deikeninden bir dizi deikene aktarmak iin
mysql_result() fonksiyonu kullanlr,
Bu fonksiyonun baaryla icra edilip edilmedii fonksiyondan dnen deerin
true/doru veya false/yanl olmasndan anlarz. mysql_num_rows($result) fonksiyonuyla da sorgu sonucunda ka satrlk
Bu deer false ise bu deyimin die() blm icra edilecek ve Browser penceresine deer geri dndn reniriz :
veritabannn alamad mesajyla birlikte MySQL'in hata mesaj da gnderilecektir. for ($i=0; $i< mysql_num_rows($result) ; $i++) {
PHP'nin MySQL veritabann seememesi ou zaman kullanc yetkilerinin Internet $adi= mysql_result($result, $i, "adi");
ziyaretilerini kapsayacak ekilde dzenlenmemi olmasndan kaynaklanr. $telefon= mysql_result($result, $i, "telefon");
Bu durum gerek Web sunucusunda ortaya karsa, Web sunucusu ynetimine
bavurmak gerekir. echo "<tr><td>".$adi."</td><td>".$telefon.
imdi bu anlattklarmz bir araya getiren kolay bir PHP programyla biraz nce "</td></tr> <br>";
oluturduumuz "veri" adl veritabanndan bir birinci kiiye ait verileri "okutarak, HTML }
sayfamzda kullanalm.
25 26
27 28
29 30
5
http Balklar
Web sayfamz http protokoln kullanarak iletiyoruz. Html dosyasnn zerinde http balk cmleleri iletilmesi iin
http protokolnde web sunucusundan gelen cevab oluturan iki ana header() fonksiyonu kullanlr.
para bulunur: balk(header) ve gvde (body). header(Alan: Deer);
Web sayfasn taraycsnda aan bir ziyareti http balklarn Bu yapda Alan: baln grevini temsil eden komut, Deer de
grmez, http gvdesi ise taraycda grnen ksmdr. komutun grevini yaparken kullanaca deeri ifade eder.
http balklar, taraycnn ve web sunucusunun almasna yardm Burada dikkat edilmesi gereken baz noktalar vardr:
eden nemli bilgileri tutarlar. http balklar bir kez gnderilir ve ardndan gelen bo bir satr ile
http balklar php scriptleri yardmyla oluturulabilir ve bu balklar http nin gvdesinden ayrlr.
kullanarak: Bu gndermeden sonra web sayfasnn ileriki ksmlarnda http
1. Ziyaretimizin otomatik olarak baka bir sayfaya ynlendirebilir bal eklenemez.
2. Ziyaretilerimize cookie ler gnderebilir Yani ksaca http bal gvde ksmna geilmeden nce tamamen
3. Taraycnn web sayfasn cachelemesini engelleyebiliriz. yollanmaldr.
31 32
33 34
6
Cookie rnek http dorulamas
<?php
Baz sayfalarn ifre korumasyla
if ($_COOKIE["sayac"] !=""){
$yeni_sayac = $_COOKIE["sayac"] + 1 ; eriimleri istediimiz kiilere ak
$gecerli_sure = time() + 7*24*60*60 ; hale getirilmektedir.
/* Bir hafta geerli olacak */ PHP scriptlerinde http
setcookie("sayac", $yeni_sayac, $gecerli_sure);
dorulamas PHP yorumlaycs
echo "Merhaba, sayfamza $_COOKIE[sayac] kez girdiniz. bir APACHE modl olarak
Yine bekleriz.";} alrken kullanlabilir. (PHP web
else{ sunucusundan ayrk bir uygulama
$gecerli_sure = time() + 7*24*60*60 ;
/* Bir hafta geerli olacak */
olarak, yani CGI uygulamas
olarak alabildii gibi web
setcookie("sayac",1, $gecerli_sure); sunucusu ile btnleik olarak
echo "Bu sayfamza ilk giriiniz! Teekkr ederiz.";} modl eklinde de alr.)
?>
37 38
http dorulamas
http dorulamas PHP scripti, gerekli http balklarn gnderdii taktirde http dorulama ilemini
taklit edebilir.
HTTP dorulamasnn hangi admlarda gerekletirildiini inceleyelim: PHP, kullancnn ekranda grntlenecek olan kullanc ad/ifre penceresine
girilecek deerleri srasyla $_SERVER sper globalindeki PHP_AUTH_USER ve
1. Web sitemizi ziyaret eden kii o sayfay web sunucumuzdan ister. PHP_AUTH_PW anahtarlarnda saklar.
2. HTTP dorulamas uygulamalarnda web sunucu istenen dosyann Bu deiken ve anahtarlar kullanarak biz de PHP scriptlerimiz ierisinden http
korumal bor alanda olup olmadn kontrol eder. dorulamas ilemlerini yrtebiliriz.
3. stenilen bir dosya korumal alana giriyorsa 401 yetkisiz kullanc
mesajn http balnda iletir. if (isset($_SERVER["PHP_AUTH_USER"]) ){
header("WWW-Authenticate: Basic realm=\"$bolge_adi\"");
4. Tarayc bu mesaj alr ve dosyaya eriim iin kullanc ad ve
header("HTTP/1.0 401 Unauthorized");
ifresinin girilmesi gerektiini anlar ve kullancya ilgili kullanc echo "Bu sayfaya eriebilmeniz iin yetkili bir kullanc
ad/ifre penceresini gsterir. olmanz gerekir.";
5. Kullanc ad ve ifresi bu pencereye girilir. Bu bilgi tekrar web exit();}
sunucusuna gnderilir. else{
6. Geerli kullanc ad ve ifresi alndnda istenilen sayfa kullancya if ( ($_SERVER["PHP_AUTH_USER"] != $kullanici_adi) ||
gnderilir. ($_SERVER["PHP_AUTH_PW"] != $sifre) ){
header("WWW-Authenticate: Basic realm=\"$bolge_adi\"");
7. Eer kullanc ad ve ifre geerli deilse tekrar giri sayfas, geerli
header("HTTP/1.0 401 Unauthorized");
veriler girilinceye kadar grntlenir. echo "Bu sayfaya eriebilmeniz iin yetkili bir kullanc
olmanz gerekir.";
exit();}
39 } gizlisayfa.php 40