PHP - Pengkhususan PDO: Panduan untuk Pemula

Hai sana, calon pengaturcara! Hari ini, kita akan memulakan sebuah perjalanan yang menarik ke dunia PHP dan pengkhususan PDO yang kuat. Jangan bimbang jika anda belum pernah menulis baris kod sebelum ini - saya akan menjadi panduannya yang ramah, membongkar segalanya secara langkah demi langkah. Jadi, ambil secangkir kopi, dan mari kita masuk ke dalam!

PHP - PDO Extension

Apa Itu PDO?

PDO bermaksud PHP Data Objects. Ia seperti pengguna universal yang membantu PHP berkomunikasi dengan jenis-jenis database yang berbeza. Bayangkan anda cuba berkomunikasi dengan orang-orang dari negara-negara yang berbeza - PDO adalah kawan multibahasa anda yang dapat bertutur dengan semua orang!

Mengapa Menggunakan PDO?

Anda mungkin bertanya, " Mengapa saya patut peduli tentang PDO?" Well, biarkan saya ceritakan sedikit cerita. Kembali pada masa saya mula mengajar PHP, kita menggunakan pelbagai kaedah untuk setiap jenis database. Ia seperti belajar bahasa baru setiap kali anda menukar database. PDO mengubah segalanya. Ia menyediakan cara konsisten untuk bekerja dengan database, membuat hidup anda sebagai pengaturcara menjadi lebih mudah.

Sekarang, mari kita masukkan tangan kita dalam kod!

Sambungan PDO

Menyediakan Sambungan

Untuk mula menggunakan PDO, pertama kita perlu menyambung ke database. mari kita lihat bagaimana kita boleh melakukannya:

<?php
$host = 'localhost';
$dbname = 'my_database';
$username = 'root';
$password = 'password';

try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Berjaya disambung";
} catch(PDOException $e) {
echo "Gagal disambung: " . $e->getMessage();
}
?>

Mari kita bongkar ini:

  1. Kita tentukan butiran sambungan (host, nama database, username, dan kata laluan).
  2. Kita gunakan blok try-catch untuk mengendalikan apa-apa kesilapan yang mungkin berlaku.
  3. Dalam blok try, kita membuat objek PDO baru dengan butiran sambungan kita.
  4. Kita tetapkan mod error ke untuk melempar pengecualian, yang membantu kita tangkap dan endalikan kesilapan lebih baik.
  5. Jika segala-galanya berjaya, kita akan lihat "Berjaya disambung". Jika tidak, kita akan lihat mesej kesilapan.

Pilihan Sambungan

PDO membolehkan kita menetapkan pelbagai pilihan saat menyambung. mari kita lihat contoh:

<?php
$options = [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password, $options);
?>

Pilihan ini menetapkan mod penarikan default ke array associative dan mematikan emulasi klausal yang diprep. Jangan bimbang jika ini terdengar seperti bahasa gobbledygook saat ini - kita akan menjelaskan konsep ini secara lebih mendalam nanti!

Metode-metode Kelas PDO

Sekarang kita telah disambung, mari kita lihat beberapa metode PDO yang paling biasa anda akan gunakan.

Penjalanan Query

Metode query()

Metode query() digunakan untuk menjalankan query SQL yang mudah:

<?php
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch()) {
echo $row['name'] . "\n";
}
?>

Kod ini mengambil semua pengguna dari tabel 'users' dan mencetak nama mereka. Ia seperti meminta PDO untuk pergi ke perpustakaan (database), mencari buku pengguna, dan membacakan semua nama untuk anda.

Metode exec()

Metode exec() digunakan untuk statement SQL yang tidak mengembalikan set hasil:

<?php
$count = $pdo->exec("DELETE FROM users WHERE active = 0");
echo "$count pengguna tak aktif telah dihapuskan.";
?>

Ini menghapuskan pengguna tak aktif dan memberitahu anda berapa yang dihapuskan. Pemandangan ini seperti meminta PDO untuk membersihkan senarai pengguna anda dengan menghapuskan siapa yang tak aktif.

Klausal Yang Diprep

Klausal yang diprep adalah cara yang lebih selamat untuk menjalankan query, khususnya saat berurusan dengan input pengguna. Mereka membantu mencegah serangan SQL injection - kerentanan keselamatan umum.

<?php
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->execute(['name' => 'John Doe', 'email' => '[email protected]']);
?>

Ini seperti memberikan PDO suatu borang untuk diisi. Pertama-tama kita siapkan klausal, kemudian mengisi ruang kosong (:name dan :email) dengan nilai sebenar.

Penarikan Hasil

PDO menyediakan beberapa cara untuk menarik hasil:

<?php
$stmt = $pdo->query("SELECT * FROM users");

// Penarikan sebagai array associative
$user = $stmt->fetch(PDO::FETCH_ASSOC);

// Penarikan sebagai objek
$user = $stmt->fetch(PDO::FETCH_OBJ);

// Penarikan semua hasil
$users = $stmt->fetchAll();
?>

Pemandangan ini seperti berbeza-beda untuk membalikkan data yang PDO mendapatkan untuk anda. Anda dapat mendapatkannya sebagai array (seperti senarai), objek (seperti paket terstruktur), atau sekali gus.

Pengurusan Transaksi

Transaksi membolehkan anda melakukan operasi berbilang sebagai unit kerja tunggal:

<?php
try {
$pdo->beginTransaction();
$pdo->exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
$pdo->exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
echo "Gagal: " . $e->getMessage();
}
?>

Ini seperti memberitahu PDO, "Saya tentang untuk melakukan sesuatu yang penting, pastikan ia semua berlaku atau tiada yang berlaku." Ia sangat baik untuk operasi di mana anda perlu memastikan integriti data.

Tabel Metode PDO

Ini adalah tabel ringkasan utama metode PDO yang kita telah diskusi:

Metode Keterangan Contoh
query() Menjalankan query SQL $stmt = $pdo->query("SELECT * FROM users");
exec() Menjalankan statement SQL dan mengembalikan jumlah baris yang terpengaruh $count = $pdo->exec("DELETE FROM users WHERE active = 0");
prepare() Menyiapkan klausal untuk penjalanan $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
execute() Menjalankan klausal yang diprep $stmt->execute(['name' => 'John', 'email' => '[email protected]']);
fetch() Menarik baris berikutnya dari set hasil $row = $stmt->fetch(PDO::FETCH_ASSOC);
fetchAll() Menarik semua baris dari set hasil $rows = $stmt->fetchAll();
beginTransaction() Memulakan transaksi $pdo->beginTransaction();
commit() Melakukan transaksi $pdo->commit();
rollBack() Mengembalikan transaksi $pdo->rollBack();

Dan itu adalah! Kita telah menutupi asas pengkhususan PDO dalam PHP. Ingat, seperti belajar kemahiran baru, pengkhususan PDO memerlukan latihan. Jangan hairan jika ia tidak semua membuat sense segera. Terus mencoba, dan segera anda akan menjalankan query database seperti seorang pro!

Selamat berkoding, para ahli database masa depan!

Credits: Image by storyset