PHP MySQLi Fonksiyonları: mysqli_query ve mysqli_connect
⚡ Akıllı Özet
MySQLPHP ve diğer veritabanı erişim yöntemleri, bir PHP betiğinin veritabanına bağlanmasına, sorgular çalıştırmasına ve sonuçları okumasına olanak tanır. Bu kılavuz, temel mysqli işlevlerini, eksiksiz CRUD örneklerini, güvenlik için hazırlanmış ifadeleri ve alternatif PDO ve ODBC erişim yöntemlerini kapsamaktadır.

PHP, veri manipülasyonu için zengin bir yerleşik fonksiyon koleksiyonuna sahiptir. MySQL veritabanları.
PHP mysqli_connect işlevi
PHP'deki `mysqli_connect` fonksiyonu, bir veritabanına bağlanmak için kullanılır. MySQL veritabanı sunucusu.
Söz dizimi şu şekildedir.
<?php $db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password); ?>
İŞTE,
- “$db_handle” veritabanı bağlantısı kaynak değişkenidir.
- “mysqli_connect(…)” PHP veritabanı bağlantısı için kullanılan fonksiyondur.
- “$db_server_name”, veritabanını barındıran sunucunun adı veya IP adresidir. MySQL sunucusu.
- “$db_user_name” geçerli bir kullanıcı adıdır. MySQL sunucusu.
- “$db_password”, veritabanındaki bir kullanıcı adıyla ilişkilendirilmiş geçerli bir paroladır. MySQL sunucusu.
PHP mysqli_select_db işlevi
mysqli_select_db işlevi bir veritabanı seçmek için kullanılır.
Söz dizimi şu şekildedir.
<?php mysqli_select_db($db_handle, $database_name); ?>
İŞTE,
- “mysqli_select_db(…)” doğru veya yanlış değerini döndüren veritabanı seçim fonksiyonudur
- “$db_handle” sunucu bağlantı linkidir.
- “$database_name” veritabanının adıdır
PHP mysqli_query işlevi
Mysqli_query işlevi yürütmek için kullanılır SQL sorguları.
Bu fonksiyon aşağıdaki sorgu türlerini çalıştırmak için kullanılabilir:
- Ekle
- Seç
- Güncelle
- Sil
Söz dizimi şu şekildedir.
<?php mysqli_query($db_handle, $query); ?>
İŞTE,
- “mysqli_query(…)” SQL sorgularını yürüten fonksiyondur.
- “$db_handle” sunucu bağlantı linkidir.
- “$query” yürütülecek SQL sorgusudur
PHP mysqli_num_rows işlevi
mysqli_num_rows işlevi, bir seçme sorgusundan döndürülen satır sayısını almak için kullanılır.
Söz dizimi şu şekildedir.
<?php mysqli_num_rows($result); ?>
İŞTE,
- “mysqli_num_rows(…)” satır sayma fonksiyonudur
- “$result” mysqli_query sonuç kümesidir
PHP mysqli_fetch_array işlevi
`mysqli_fetch_array` fonksiyonu, sorgu sonuç kümesinden satır dizilerini getirmek için kullanılır.
Söz dizimi şu şekildedir.
<?php mysqli_fetch_array($result); ?>
İŞTE,
- “mysqli_fetch_array(…)” satır dizilerini getirmeye yarayan fonksiyondur
- “$result” mysqli_query işlevi tarafından döndürülen sonuçtur.
PHP mysqli_close işlevi
Mysqli_close işlevi açık bir veritabanı bağlantısını kapatmak için kullanılır.
Söz dizimi şu şekildedir.
<?php mysqli_close($db_handle); ?>
İŞTE,
- “mysqli_close(…)”, bağlantıyı kapatan PHP fonksiyonudur.
- “$db_handle”, sunucu bağlantı kaynağıdır.
PHP MySQL CRUD Örnekleri
Bu işlevlerden yararlanan pratik örneklere bakalım. Bu eğitim, aşağıdaki konularda bilgi sahibi olduğunuzu varsaymaktadır: MySQL ve SQL; bu terimler size yabancı geliyorsa, lütfen kılavuzumuza bakın. MySQL ve SQL eğitimleri.
my_personal_contacts adında, yalnızca tek bir tablo içeren basit bir veritabanı oluşturacağız. Bağlan MySQL gibi favori erişim aracınızı kullanarak MySQL Workbench veya phpMyAdmin kullanarak my_personal_contacts adında bir veritabanı oluşturun, ardından tabloyu oluşturmak ve bazı örnek veriler eklemek için aşağıdaki komut dosyasını çalıştırın.
CREATE TABLE IF NOT EXISTS `my_contacts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `full_names` varchar(255) NOT NULL, `gender` varchar(6) NOT NULL, `contact_no` varchar(75) NOT NULL, `email` varchar(255) NOT NULL, `city` varchar(255) NOT NULL, `country` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES (1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'), (2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'), (3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'), (4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');
Veritabanından kayıtları okuma
Şimdi veritabanındaki kayıtları yazdıran bir program oluşturacağız.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "SELECT * FROM my_contacts"; // SQL select query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Database access failed: " . mysqli_error($dbh)); $rows = mysqli_num_rows($result); // get number of rows returned if ($rows) { while ($row = mysqli_fetch_array($result)) { echo 'ID: ' . $row['id'] . '<br>'; echo 'Full Names: ' . $row['full_names'] . '<br>'; echo 'Gender: ' . $row['gender'] . '<br>'; echo 'Contact No: ' . $row['contact_no'] . '<br>'; echo 'Email: ' . $row['email'] . '<br>'; echo 'City: ' . $row['city'] . '<br>'; echo 'Country: ' . $row['country'] . '<br><br>'; } } mysqli_close($dbh); // close the database connection ?>
Yukarıdaki kodun çalıştırılması, aşağıdaki diyagramda gösterilen sonuçları verir.
Yeni kayıtlar ekleme
Şimdi tablomuza yeni bir kayıt ekleyen bir örneğe bakalım. Aşağıdaki kod, uygulamanın nasıl yapıldığını göstermektedir.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"; $sql_stmt .= " VALUES(7,8,9,10,11,12)"; $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Adding record failed: " . mysqli_error($dbh)); echo "Poseidon has been successfully added to your contacts list"; mysqli_close($dbh); // close the database connection ?>
Yukarıdaki kodu çalıştırdığınızda "Poseidon kişi listenize başarıyla eklendi" çıktısı alınır. Poseidon'un listenize eklenip eklenmediğini görmek için select sorgusu örneğine geri dönün ve kişilerinizi tekrar alın.
Kayıtları güncelleme
Şimdi veritabanındaki bir kaydı güncelleyen bir örneğe bakalım. Poseidon'un iletişim numarasını ve e-posta adresini değiştirdiğini varsayalım.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9"; $sql_stmt .= " WHERE `id` = 5"; // SQL update query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Updating record failed: " . mysqli_error($dbh)); echo "ID number 5 has been successfully updated"; mysqli_close($dbh); // close the database connection ?>
Kayıtları silme
Şimdi veritabanından kayıtları silen bir örneğe bakalım. Diyelim ki Venüs'ün bize karşı bir uzaklaştırma kararı var ve onun iletişim bilgilerini veritabanımızdan silmemiz gerekiyor. veritabanı.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $id = 4; // Venus's ID in the database $sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Deleting record failed: " . mysqli_error($dbh)); echo "ID number $id has been successfully deleted"; mysqli_close($dbh); // close the database connection ?>
Hazırlanmış Deyimlerle SQL Enjeksiyonunu Önleme
Yukarıdaki CRUD örnekleri, dizeleri birleştirerek sorgular oluşturur. Bir sorgunun herhangi bir kısmı kullanıcı girdisinden geldiğinde, bu SQL enjeksiyonuna kapı açar. Hazırlanmış ifadeler, sorguyu ve veriyi ayrı ayrı göndererek bu sorunu çözer, böylece girdi asla sorgu yapısını değiştiremez.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); $stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)"); mysqli_stmt_bind_param($stmt, "ss", $name, $email); $name = 'Poseidon'; $email = 'poseidon@sea.oc'; mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); mysqli_close($dbh); ?>
Buradaki soru işaretleri yer tutucudur ve `bind_param`, ad ve e-posta değerlerini güvenli bir şekilde bağlar. Veritabanı bunları kesinlikle veri olarak ele alır; bu nedenle, hem mysqli hem de PDO'da bulunan hazırlanmış ifadeler, kullanıcı girdisi kullanan herhangi bir sorguyu çalıştırmak için önerilen yöntemdir.
PHP Veri Erişim Nesnesi (PDO)
PDO, farklı veritabanı motorlarını manipüle etmemizi sağlayan bir sınıftır. MySQL, PostgreSQLve aynı arayüzü kullanan MS SQL Server.
Aşağıdaki kod, PDO nesnesini kullanan veritabanı erişim yöntemini gösterir.
Not: Aşağıdaki kod, SQL dilini, dizileri, istisna işlemeyi ve foreach döngüsünü bildiğinizi varsaymaktadır.
<?php try { $pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec('SET NAMES "utf8"'); $sql_stmt = "SELECT * FROM `my_contacts`"; $result = $pdo->query($sql_stmt); $result->setFetchMode(PDO::FETCH_ASSOC); $data = array(); foreach ($result as $row) { $data[] = $row; } print_r($data); } catch (PDOException $e) { echo $e->getMessage(); } ?>
İŞTE,
- “try{…}catch{…}” istisna işleme bloğudur.
- “$pdo = new PDO(“mysql…” ifadesi, PDO nesnesinin bir örneğini oluşturur ve veritabanı sürücüsünü, sunucu ve veritabanı adlarını, kullanıcı kimliğini ve parolasını iletir.
- “$pdo->setAttribute…” komutu, PDO hata modunu istisna fırlatacak şekilde ayarlar.
- “$pdo->exec('SET NAMES…” kodlama biçimini ayarlar
PHP ODBC Veri Erişimi
ODBC, Açık Veritabanı Bağlantısı'nın kısaltmasıdır. Temel sözdizimi aşağıdaki gibidir.
<?php $conn = odbc_connect($dsn, $user_name, $password); ?>
İŞTE,
- “odbc_connect”, PHP'nin yerleşik bir fonksiyonudur.
- “$dsn” ODBC veri kaynağı adıdır.
- “$user_name” isteğe bağlıdır ve ODBC kullanıcı adı için kullanılır.
- “$password” isteğe bağlıdır ve ODBC şifresi için kullanılır.
Aşağıdaki örnek, aşağıdaki yöntemi kullandığınızı varsaymaktadır. Windows ve Northwind'e bir ODBC bağlantısı oluşturdum. Microsoft Northwind adlı Access veritabanı.
<?php $dbh = odbc_connect('northwind', '', ''); if (!$dbh) { exit("Connection Failed: " . $dbh); } $sql_stmt = "SELECT * FROM customers"; $result = odbc_exec($dbh, $sql_stmt); if (!$result) { exit("Error accessing records"); } while (odbc_fetch_row($result)) { $company_name = odbc_result($result, "CompanyName"); $contact_name = odbc_result($result, "ContactName"); echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>"; } odbc_close($dbh); ?>

