Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ringkasan teknologi sambungan pangkalan data dan masalah biasa dalam PHP

Ringkasan teknologi sambungan pangkalan data dan masalah biasa dalam PHP

WBOY
WBOYasal
2023-06-09 11:15:24971semak imbas

PHP ialah bahasa sumber terbuka yang digunakan untuk memproses data daripada aplikasi web dinamik. Banyak aplikasi web menggunakan pangkalan data untuk menyimpan dan memproses data. Sambungan pangkalan data adalah bahagian yang tidak dapat dielakkan dalam membangunkan aplikasi web. Dalam artikel ini, kami akan membincangkan teknologi sambungan pangkalan data dalam PHP dan ringkasan masalah biasa.

  1. MySQLi lwn PDO

Dalam PHP, terdapat dua teknologi sambungan pangkalan data yang tersedia: MySQLi dan PDO. MySQLi ialah versi sambungan MySQL yang dipertingkat, menyokong lebih banyak ciri dan kelajuan yang lebih pantas, manakala PDO boleh digunakan untuk berbilang pangkalan data, seperti MySQL, Oracle dan SQL Server.

MySQLi menggunakan struktur pengaturcaraan berorientasikan objek (OOP) dan pengaturcaraan berorientasikan prosedur (POP). Ia menyediakan API berorientasikan objek dan prosedur baris arahan (CLI). MySQLi juga boleh mengendalikan senario aplikasi lanjutan seperti transaksi dan prosedur tersimpan, menjadikannya salah satu cara yang paling biasa untuk PHP menyambung ke MySQL. Berikut ialah contoh penggunaan MySQLi untuk menyambung ke pangkalan data MySQL:

// 配置数据库连接信息
$host = 'localhost';
$username = 'user';
$password = 'pwd';
$dbname = 'test_db';

// 连接MySQL数据库
$conn = mysqli_connect($host, $username, $password, $dbname);

// 检查连接是否成功
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";

PDO memisahkan pemacu pangkalan data daripada kelas PDO. Ini bermakna anda boleh menukar pangkalan data dengan mudah dan membiarkan kod di tempatnya. PDO juga termasuk banyak lapisan abstraksi pangkalan data, termasuk penyata dan transaksi yang disediakan. Berikut ialah contoh penggunaan PDO untuk menyambung ke pangkalan data MySQL:

// 配置数据库连接信息
$host = 'localhost';
$username = 'user';
$password = 'pwd';
$dbname = 'test_db';

// 连接MySQL数据库
try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    // 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "连接成功";
} catch(PDOException $e) {
    echo "连接失败: " . $e->getMessage();
}
  1. Masalah dan penyelesaian biasa

Masalah biasa mungkin timbul apabila menggunakan sambungan pangkalan data dalam PHP. Berikut ialah beberapa amalan terbaik untuk menyelesaikan masalah ini:

(1) Isu pengekodan

Sebelum menyambung ke pangkalan data, pengekodan mesti ditetapkan. Dalam MySQLi, anda boleh menggunakan mysqli_set_charset() untuk menetapkan pengekodan dalam PDO, anda boleh menetapkan pengekodan apabila menyambung ke pangkalan data. Berikut ialah contoh:

// 在MySQLi中设置编码
mysqli_set_charset($conn,"utf8");

// 在PDO中设置编码
$conn->exec("set names utf8");

(2) Suntikan SQL

Apabila pengguna memasukkan data, kod hasad mungkin dibina untuk menjalankan serangan suntikan SQL. Untuk mengelakkan perkara ini berlaku, anda harus menggunakan pernyataan yang disediakan. Berikut ialah contoh menggunakan pernyataan yang disediakan:

// 使用MySQLi中预处理语句来查询数据
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);

// 使用PDO中预处理语句来查询数据
$stmt = $conn->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();

(3) Membuka terlalu banyak sambungan

Jika terlalu banyak sambungan dibuka pada masa yang sama, ia boleh menyebabkan pelayan ranap. Untuk mengelakkan perkara ini daripada berlaku, anda boleh menggunakan pengumpulan sambungan. Pengumpulan sambungan membantu anda mengurus sambungan dan mengosongkan sambungan melahu dengan kerap. Berikut ialah contoh menggunakan kolam sambungan:

// 创建连接池并设置最大连接数以及空闲时间
$pool = new ConnectionPool('mysql:host=localhost;dbname=test_db', 'user', 'pwd', [
    'max_connections' => 10,
    'idle_timeout' => 30,
]);

// 从连接池中取出连接
$conn = $pool->getConnection();

// 将连接放回连接池
$pool->release($conn);

Ringkasnya, dalam PHP, menyambung ke pangkalan data adalah sangat penting. MySQLi dan PDO ialah dua kaedah yang biasa digunakan untuk menyambung ke pangkalan data, dan anda harus memilih dengan teliti sebelum menggunakannya. Pada masa yang sama, anda perlu memberi perhatian kepada masalah biasa apabila menggunakannya, seperti masalah pengekodan, suntikan SQL dan membuka terlalu banyak sambungan.

Atas ialah kandungan terperinci Ringkasan teknologi sambungan pangkalan data dan masalah biasa dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn