PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas Ia mempunyai banyak rangka kerja dan perpustakaan untuk digunakan oleh pembangun, dan PDO (Objek Data PHP) ialah lanjutan PHP untuk menyambung ke pangkalan data, menjadikannya lebih mudah untuk pembangun. Ia boleh mengendalikan pelbagai jenis pangkalan data dengan cekap, dan juga menyediakan cara yang lebih selamat untuk mengelakkan isu keselamatan seperti suntikan SQL. Artikel ini akan memberi tumpuan kepada cara menggunakan PDO untuk melaksanakan pertanyaan pangkalan data.
1. Pengenalan kepada PDO
PDO ialah sambungan pangkalan data yang diperkenalkan dalam PHP 5.1 Ia adalah lapisan akses data merentas platform. Ia menyediakan akses piawai kepada pelbagai pangkalan data, serta sokongan untuk prapemprosesan data dan pertanyaan berparameter, dengan itu mengurangkan risiko kelemahan keselamatan dan menjadikan kod kami lebih mantap.
2. Wujudkan sambungan pangkalan data
Sebelum menggunakan PDO untuk pertanyaan pangkalan data, kita perlu mewujudkan sambungan dengan pangkalan data terlebih dahulu. Sambungan memerlukan nama pengguna, kata laluan, nama hos, nombor port, nama pangkalan data dan parameter lain pangkalan data Akhirnya, objek PDO diperoleh, dan kita boleh menggunakan objek ini untuk operasi seterusnya.
//Sambung ke pangkalan data
$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
$username = "root";
$password = " 123456";
cuba {
$pdo = new PDO($dsn, $username, $password); echo "连接成功!";
} tangkapan (PDOException $e) {
echo "连接失败:" . $e->getMessage();
}
Dalam kod di atas, $dsn ialah nama Sumber data, yang mengandungi nama hos, nama pangkalan data dan set aksara. $username dan $password ialah nama pengguna dan kata laluan yang diperlukan untuk menyambung ke pangkalan data. Jika sambungan berjaya, "Sambungan berjaya!" jika sambungan gagal, mesej ralat akan dikeluarkan.
3. Operasi pertanyaan asas
Mari perkenalkan beberapa operasi pertanyaan pangkalan data PDO.
1. Permintaan satu medan
Apabila kita ingin menanyakan medan dalam pangkalan data, kita boleh menggunakan kod berikut:
//Pertanyaan medan tunggal
$sql = "SELECT count(*) FROM user WHERE status=1";
$res = $pdo->query($sql);
$row = $res->fetch(PDO: :FETCH_NUM) ;
$count = $row[0];
echo "Bilangan pengguna:" $count;
Dalam kod di atas, $sql ialah pernyataan SQL yang akan dilaksanakan. , $pdo-> ;query($sql) melaksanakan pernyataan dan menyimpan hasilnya dalam $res. Kita boleh mendapatkan baris pertama data dalam set hasil melalui $res->fetch(PDO::FETCH_NUM bermaksud mengembalikan indeks berangka yang dipulangkan diakses dalam mod indeks berangka, yang memudahkan kita untuk mendapatkan data nilai medan tunggal.
2. Tanya berbilang medan
Apabila kita perlu menanyakan berbilang medan, kita boleh menggunakan kod berikut:
//Query berbilang medan
$sql = " PILIH id, nama pengguna, e-mel DARI pengguna WHERE status=1";
$res = $pdo->query($sql);
while ($row = $res->fetch(PDO:: FETCH_ASSOC) )) {
echo "ID:" . $row['id'] . ",姓名:" . $row['username'] . ",邮箱:" . $row['email'] . "<br/>";
}
Dalam kod di atas, $res->fetch(PDO::FETCH_ASSOC) akan mengembalikan tatasusunan bersekutu, di mana kunci tatasusunan mewakili nama medan , nilai tatasusunan ialah nilai yang sepadan dengan medan ini.
3. Tanya berbilang baris data
Apabila kita perlu menanyakan berbilang baris data, kita boleh menggunakan kod berikut:
//Pertanyakan berbilang baris data
$sql = "PILIH * DARI pengguna WHERE status=1";
$res = $pdo->query($sql);
$list = $res->fetchAll(PDO::FETCH_ASSOC );
foreach ($list as $row) {
echo "ID:" . $row['id'] . ",姓名:" . $row['username'] . ",邮箱:" . $row['email'] . "<br/>";
}
Dalam kod di atas, $res->fetchAll() mengembalikan semua data set hasil. Kaedah fetchAll() menggunakan parameter PDO::FETCH_ASSOC untuk menukar set keputusan kepada tatasusunan tatasusunan bersekutu, dan menggunakan pernyataan foreach untuk melintasi tatasusunan dan mengeluarkan data.
4 Gunakan pertanyaan berparameter
Jika kami terus menggunakan nilai yang dimasukkan oleh pengguna sebagai sebahagian daripada pernyataan SQL dalam operasi pertanyaan, ia mungkin menyebabkan masalah keselamatan seperti suntikan SQL untuk mengelakkan Soalan ini, kita boleh menggunakan pertanyaan berparameter. Contoh berikut menunjukkan cara menggunakan pertanyaan berparameter:
//pertanyaan berparameter
$nama pengguna = "admin";
$kata laluan = "123456";
$sql = 'PILIH * DARI pengguna WHERE nama pengguna = ? DAN kata laluan = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute([$nama pengguna, $password]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
jika (!$user) {
echo "用户名或密码错误!";
} lain {
echo "欢迎," . $user['username'] . "!";
}
Dalam kod di atas, kami menggunakan kaedah prepare() untuk memproses pernyataan SQL, dan kemudian menggunakan kaedah execute() untuk menghantar parameter ke dalam pertanyaan. Kaedah $stmt->fetch() mengambil data daripada set hasil. Pendekatan ini mengelakkan isu suntikan SQL yang timbul daripada mempunyai berbilang parameter pertanyaan.
4. Ringkasan
Artikel ini memperkenalkan cara menggunakan PDO untuk melaksanakan pertanyaan pangkalan data. Dengan mempelajari operasi asas seperti menyambung ke pangkalan data, menanyakan satu medan, menanyakan berbilang medan, menanyakan berbilang baris data dan menggunakan pertanyaan berparameter, kami boleh mengendalikan pangkalan data dengan lebih fleksibel dan berkesan meningkatkan kecekapan pembangunan. Dalam pembangunan sebenar, kami juga perlu mempertimbangkan isu keselamatan lain, seperti isu suntikan SQL, pengukuhan pengesahan parameter, penapisan, dsb. Lebih berhati-hati perlu diambil semasa proses pembangunan untuk memastikan keselamatan aplikasi.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan kaedah pdo untuk melaksanakan pertanyaan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!