Rumah >pembangunan bahagian belakang >masalah PHP >php mengubah suai sql
PHP (Hypertext Preprocessor) ialah bahasa skrip sumber terbuka yang digunakan secara meluas untuk pembangunan aplikasi web. Dalam pembangunan PHP, pangkalan data adalah komponen yang sangat penting, dan mengubah suai data SQL adalah operasi yang sangat biasa. Artikel ini akan memperkenalkan cara mengubah suai SQL dalam PHP.
Apakah itu SQL?
SQL (Bahasa Pertanyaan Berstruktur) ialah bahasa standard untuk mengurus pangkalan data hubungan (RDBMS). SQL digunakan untuk memasukkan, mengemas kini, memadam dan bertanya data dalam pangkalan data Ia boleh mengurus jadual, baris dan lajur dalam pangkalan data hubungan. Perisian pangkalan data seperti MySQL, Oracle, MS SQL Server dan PostgreSQL semuanya menyokong bahasa SQL.
Bagaimana untuk menyambung ke pangkalan data?
PHP menyediakan sambungan MySQLi dan PDO terbina dalam Menyambung ke pangkalan data memerlukan penggunaan salah satu sambungan ini.
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Cipta sambungan
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Semak sama ada sambungan itu berjaya
jika (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
gema "Berjaya disambungkan";
$dsn = "mysql:host=localhost;dbname=myDB";
$username = "username";
$password = "password";
// Cipta sambungan
cuba {
$conn = new PDO($dsn, $username, $password); // 设置 PDO 错误模式为异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
Bagaimana untuk mengubah suai data SQL?
Dalam PHP, menggunakan pernyataan SQL untuk mengubah suai data memerlukan menggunakan kaedah mysqli_query atau PDO::exec. Di bawah adalah beberapa contoh biasa.
$sql = "KEMASKINI myTable SET column1 = 'value1', column2 = 'value2' WHERE id = 123";
jika (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} lain {
echo "Error updating record: " . mysqli_error($conn);
}
$sql = "KEMASKINI myTable SET column1 = 'value1', column2 = 'value2' WHERE id = 123";
cuba {
$conn->exec($sql); echo "Record updated successfully";
} catch(PDOException $e) {
echo "Error updating record: " . $e->getMessage();
}
Perlu diambil perhatian bahawa anda harus berhati-hati apabila mengubah suai data. Terutama dalam persekitaran pengeluaran, anda perlu memastikan bahawa pernyataan SQL anda dilaksanakan dengan betul dan tidak merosakkan data.
Bagaimana untuk memastikan keselamatan SQL?
Untuk memastikan keselamatan pernyataan SQL, serangan suntikan SQL perlu dicegah. Serangan suntikan SQL adalah salah satu daripada serangan rangkaian yang paling biasa. Penyerang mengeksploitasi kelemahan dalam pemacu pangkalan data untuk menyuntik pernyataan SQL ke dalam pangkalan data. Penyerang boleh mengubah suai, memadam atau membocorkan data sensitif dengan menyuntik kod hasad.
Cara terbaik untuk mengelakkan suntikan SQL adalah dengan menggunakan pernyataan yang disediakan. Apabila menggunakan kaedah prapemprosesan, pernyataan SQL dihuraikan seperti pertanyaan, tetapi ia tidak dilaksanakan. Parameter pertanyaan akan dihantar ke pelayan pangkalan data. Pertanyaan kemudiannya cuba memadankan parameter dan hanya mengembalikan hasil yang sepadan. Dengan menggunakan pernyataan yang disediakan, serangan suntikan SQL boleh dicegah dengan berkesan.
$sql = "KEMASKINI myTable SET column1 = ?, column2 = ? WHERE id = ?";
$stmt = mysqli_prepare($conn , $sql);
mysqli_stmt_bind_param($stmt, "sss", $value1, $value2, $id);
$value1 = "value1";
$value2 = "value2";
$id = 123;
jika (mysqli_stmt_execute($stmt)) {
echo "Record updated successfully";
} lain {
echo "Error updating record: " . mysqli_stmt_error($stmt);
}
$sql = "KEMASKINI myTable SET column1 = :value1, column2 = :value2 WHERE id = :id";
$stmt = $conn->prepare($ sql );
$stmt->bindValue(':value1', $value1);
$stmt->bindValue(':value2', $value2);
$stmt- > ;bindValue(':id', $id);
$value1 = "value1";
$value2 = "value2";
$id = 123;
if ($stmt->execute()) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $stmt->errorInfo();
}
Pernyataan yang disediakan adalah lebih selamat daripada melaksanakan pernyataan SQL secara langsung kerana ia menapis aksara Khas dalam input dikeluarkan. Jika anda tidak menggunakan pernyataan yang disediakan, anda perlu menggunakan kaedah lain untuk mengurangkan risiko serangan suntikan SQL, seperti htmlspecialchars, addslashes atau mysql_real_escape_string, dsb.
Ringkasan
Artikel ini terutamanya memperkenalkan cara mengubah suai SQL dalam PHP dan cara memastikan keselamatan SQL. Walaupun serangan suntikan SQL adalah salah satu serangan siber yang paling biasa, anda boleh mengelakkannya dengan berkesan dengan menggunakan pernyataan yang disediakan. PHP menyediakan banyak sambungan terbina dalam untuk memudahkan pengurusan pangkalan data hubungan Saya harap artikel ini akan membantu anda.
Atas ialah kandungan terperinci php mengubah suai sql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!