PHP ile bir MySQL veritabanı içinde 3 farklı yöntemle tablo(lar) oluşturabiliriz. Bir tabloda sütunlar her bir kayıt için girilecek olan değerleri, satır ise girilecek olan kayıtları ifade eder.
MySQL ile bir tablo oluşturmak için aşağıdaki komut yapısını kullanabilirsiniz:
CREATE TABLE tablo_adi (sütun_adi sütun_veritürü)
Bu komut içinde, tablo adı ve en az bir sütun adı ve sütun veri türü kullanılması gerekir.
Buradaki örneklerimizde, 4 adet sütun (id, adi, soyadi, dogumtarihi) içeren personel adlı bir tablo oluşturmaya çalışacağız:
CREATE TABLE personel (
id int(11) NOT NULL AUTO_INCREMENT,
adi varchar(30) NOT NULL,
soyadi varchar(30) NOT NULL,
dogumtarihi date NOT NULL,
PRIMARY KEY (id)
)
Yukarıdaki komut yapısında yer alan değerler aşağıda belirtildiği şekilde işlem yapar:
AUTO_INCREMENT: Her yeni kayıt girişinde bu alana otomatik olarak bir önceki kaydın aynı sütun değerine 1 ekleyerek değer girileceğini gösterir.
NOT NULL: Bu alana boş değer girilemeyeceğini gösterir.
PRIMARY KEY: Tabloda bir sütunu öncelikli anahtar değer olarak belirler.
1. MySQLi nesneye dayalı yöntem ile
<?php
$sunucu = "localhost";
$kullanici = "kullanıcıadı";
$parola = "parola";
$veritabani = "veritabaniadi";
// Bağlantı oluşturma
$bag = new mysqli($sunucu, $kullanici, $parola, $veritabani);
// Bağlantı kontrolü
if ($bag->connect_error) {
die("Bağlantı hatası: " . $bag->connect_error);
}
// MySQL tablo oluşturma komutu
$sqlquery = "CREATE TABLE personel (
id int(11) NOT NULL AUTO_INCREMENT,
adi varchar(30) NOT NULL,
soyadi varchar(30) NOT NULL,
dogumtarihi date NOT NULL,
PRIMARY KEY (id)
)";
if ($bag->query($sqlquery) === TRUE) {
echo "Tablo oluşturuldu!";
}
else {
echo "Tablo oluşturma hatası: " . $bag->error;
}
$bag->close();
?>
Yukarıdaki örnekteki kodlar, veritabanına bağlandıktan sonra, $sqlquery değişkenine tablo oluşturmak için gerekli olan MySQL komut dizisini atar. $sqlquery değişkenini $bag->query() fonksiyonuna parametre olarak geçirip, fonksiyonu çağırarak tabloyu oluşturur. Hata meydana gelirse, $bag->error değişkeni ile ekrana yazar. $bag->close() fonksiyonu ile bağlantı kapatılır.
2. MySQLi fonksiyonel yöntem ile
<?php
$sunucu = "localhost";
$kullanici = "kullanıcıadı";
$parola = "parola";
$veritabani = "veritabaniadi";
// Bağlantı oluşturma
$bag = mysqli_connect($sunucu, $kullanici, $parola, $veritabani);
// Bağlantı kontrolü
if (!$bag) {
die("Bağlantı hatası: " . mysqli_connect_error());
}
// MySQL tablo oluşturma komutu
$sqlquery = "CREATE TABLE personel (
id int(11) NOT NULL AUTO_INCREMENT,
adi varchar(30) NOT NULL,
soyadi varchar(30) NOT NULL,
dogumtarihi date NOT NULL,
PRIMARY KEY (id)
)";
if (mysqli_query($bag, $sqlquery)) {
echo "Tablo oluşturuldu!";
}
else {
echo "Tablo oluşturma hatası: " . mysqli_error($bag);
}
mysqli_close($bag);
?>
Yukarıdaki örnekteki kodlar, veritabanına bağlandıktan sonra, $sqlquery değişkenine tablo oluşturmak için gerekli olan MySQL komut dizisini atar. $bag ve $sqlquery değişkenlerini mysqli_query() fonksiyonuna parametre olarak geçirip, fonksiyonu çağırarak tabloyu oluşturur. Hata meydana gelirse, mysqli_error fonksiyonu ile ekrana yazar. mysqli_close() fonksiyonu ile bağlantı kapatılır.
3. PDO yöntemi ile
<?php
$sunucu = "localhost";
$kullanici = "kullanıcıadı";
$parola = "parola";
$veritabani = "veritabaniadi";
try {
$bag = new PDO("mysql:host=$sunucu;dbname=$veritabani", $kullanici, $parola);
// PDO hata modunu istisnaya ayarlama
$bag->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// MySQL tablo oluşturma komutu
$sqlquery = "CREATE TABLE personel (
id int(11) NOT NULL AUTO_INCREMENT,
adi varchar(30) NOT NULL,
soyadi varchar(30) NOT NULL,
dogumtarihi date NOT NULL,
PRIMARY KEY (id)
)";
$bag->exec($sqlquery);
echo "Tablo oluşturuldu!";
}
catch(PDOException $e) {
echo "Hata: " . $e->getMessage();
}
$bag = null;
?>
Yukarıdaki örnekteki kodlar, veritabanına bağlandıktan sonra, $sqlquery değişkenine tablo oluşturmak için gerekli olan MySQL komut dizisini atar. $sqlquery değişkenini $bag->exec() fonksiyonuna parametre olarak geçirip, fonksiyonu çağırarak tabloyu oluşturur. Hata meydana gelirse, $e->getMessage() fonksiyonu ile ekrana yazar. $bag değişkenine null değer atanarak bağlantı kapatılır.