php mengubah suai sql

王林
王林asal
2023-05-28 15:09:38518semak imbas

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.

  • Gunakan sambungan MySQLi:

$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";

  • Gunakan sambungan PDO:

$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.

  • mysqli_query:

$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);

}

  • PDO::exec:

$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.

  • mysqli_prepare:

$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);

}

  • Prapemprosesan PDO:

$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!

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