Merhaba arkadaşlar,
Bildiğiniz üzere PHP'de artık mysql_* fonksiyonları yerine PDO kullanımı tavsiye ediliyor. Ben de artık PDO kullanmaya karar verdim ve çalışmaya başladım. Fakat affınıza sığınarak çok basit bir problemim var ve çözümünü arıyorum.
Şöyle ki;
Elimdeki bir scriptte (mysql_* fonksyionları kullandığım) , Veritabanı bağlantısını yaptığım bir conn.php, ve veritabanı sorgularımı yaptığım bir functions.php dosyam var.
conn.php
mysql_connect("localhost", "username", "password") or die ("Oops! Server not connected"); // Connect to the host
mysql_select_db("database_name") or die ("Oops! DB not connected"); // select the database
mysql_query("SET NAMES UTF8");
?>
func.php
function setUserPassword($userId, $userPassword){
/* This function set the password of the user */
mysql_query("UPDATE users SET password = '$userPassword' WHERE id = '$userId' ");
}
function setUserMail($userId, $userMail){
/* This function set the e-mail address of the user */
mysql_query("UPDATE users SET mail = '$userMail' WHERE id = '$userId' ");
}
?>header.php sayfamda hem conn.php hem de functions.php sayfamı include etmiştm ve gayet güzel bir şekilde çalışıyordu fonksiyonlarım bu haldeyken.
Şimdi conn.php sayfamda PDO kullanarak veritabanı bağlantımı yapıp, yine functions.php sayfamda veritabanı sorgularımı çalıştırmak istiyorum. Örnek olsun diye 2 adet fonksiyon yazdım fakat yaklaşık 100 tane fonksiyon var.
conn.php
$db = new PDO("mysql:host=localhost;dbname=database_name;charset=utf8", "username", "password");
?>functions.php
$sql= "SELECT * FROM dbname WHERE ID = :tabloID";
$query = $db->prepare($sql);
$query->bindParam(':tabloID', $userId, PDO::PARAM_INT);
$result = $query->execute();
?>Bu şekilde iki sayfayı da include ettiğimde sorgu çalışmıyor. Sanırım conn.php'de tanımladığım $db objesi functions.php deki fonksiyonların içerisinde kullanılamıyor. mysql_* kullanırken böyle bir problem de yoktu tabiki ortada. Şimdi kafam karışmış durumda, fakat illa ki birileri tecrübe etmiştir bu problemi. Bazı çözüm önerilerinde Global değişkenlerden bahsedilmiş. Çok fazla iyi değilim php'de yeni öğreniyorum. Rahat anlayabileceğim basit bir çözüm öneriniz olursa çok memnun olurum. Her sayfada yeni bir PDO objesi oluşturarak birden çok database bağlantısı açmak istemiyorum. Her öneriye açığım.
Şimdiden teşekkürler.