บทช่วยสอน PHP MySQL แทรกข้อมูลหลาย ๆ ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้
ใช้ MySQLi และ PDO MySQL เพื่อแทรกข้อมูลหลาย ๆ,ตัวอย่าง (MySQLi - Object Oriented),ตัวอย่าง (MySQLi - ที่มุ่งเน้นกระบวนการ),ตัวอย่างของ (PDO),ใช้งบเตรียม,ตัวอย่าง (MySQLi ใช้งบเตรียม),
PHP MySQL แทรกข้อมูลหลาย ๆ
ใช้ MySQLi และ PDO MySQL เพื่อแทรกข้อมูลหลาย ๆ
mysqli_multi_query ฟังก์ชั่น () จะใช้ในการรันคำสั่งหลาย ๆ
ตัวอย่างต่อไปนี้จะ "MyGuests" ตารางเพิ่มอีกสามระเบียนใหม่:
ตัวอย่าง (MySQLi - Object Oriented)
<php?
$ Servername = "localhost";
$ username = "ชื่อผู้ใช้";
รหัสผ่าน $ = "รหัสผ่าน";
$ Dbname = "myDB";
// สร้างการเชื่อมโยง
$ Conn = mysqli ใหม่ ($ ServerName, $ ชื่อผู้ใช้รหัสผ่าน $, $ dbname);
// ตรวจสอบลิงก์
ถ้า ($ conn-> connect_error) {
ตาย ( "การเชื่อมต่อล้มเหลว:" $ conn-> connect_error.);
}
$ Sql = "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'จอห์น' 'กวาง' 'john@example.com'); ";
$ Sql. = "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'แมรี่' 'โม' 'mary@example.com'); ";
$ Sql. = "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'จูลี่', 'Dooley', 'julie@example.com') ";
ถ้า ($ conn-> multi_query ($ SQL) === จริง) {
echo "บันทึกใหม่จะถูกแทรกประสบความสำเร็จ";
} else {
. ก้อง "ข้อผิดพลาด:" $ SQL "<br>" $ conn-> ข้อผิดพลาด; th
}
$ Conn-> close ();
?>
| โปรดทราบว่าแต่ละคำสั่ง SQL จะต้องคั่นด้วยเครื่องหมายอัฒภาค |
---|
ตัวอย่าง (MySQLi - ที่มุ่งเน้นกระบวนการ)
<php?
$ Servername = "localhost";
$ username = "ชื่อผู้ใช้";
รหัสผ่าน $ = "รหัสผ่าน";
$ Dbname = "myDB";
// สร้างการเชื่อมโยง
$ Conn = mysqli_connect ($ ServerName, $ ชื่อผู้ใช้รหัสผ่าน $, $ dbname);
// ตรวจสอบลิงก์
ถ้า (! $ Conn) {
ตาย ( "การเชื่อมต่อล้มเหลว:" mysqli_connect_error ().);
}
$ Sql = "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'จอห์น' 'กวาง' 'john@example.com'); ";
$ Sql. = "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'แมรี่' 'โม' 'mary@example.com'); ";
$ Sql. = "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'จูลี่', 'Dooley', 'julie@example.com') ";
ถ้า (mysqli_multi_query ($ Conn, $ SQL)) {
echo "บันทึกใหม่จะถูกแทรกประสบความสำเร็จ";
} else {
. ก้อง "ข้อผิดพลาด:" $ SQL "<br>" mysqli_error ($ Conn); th
}
mysqli_close ($ Conn);
?>
ตัวอย่างของ (PDO)
<php?
$ Servername = "localhost";
$ username = "ชื่อผู้ใช้";
รหัสผ่าน $ = "รหัสผ่าน";
$ Dbname = "myDBPDO";
try {
$ Conn = ใหม่ PDO ( "MySQL: host = $ servername; dbname = $ dbname", $ ชื่อผู้ใช้รหัสผ่าน $);
// การตั้งค่าโหมด PDO ข้อผิดพลาดในการยกเว้น
$ Conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
// เริ่มต้นการทำธุรกรรม
$ Conn-> beginTransaction ();
// คำสั่ง SQL
$ Conn-> exec ( "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'จอห์น' 'กวาง' 'john@example.com') ");
$ Conn-> exec ( "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'แมรี่' 'โม' 'mary@example.com') ");
$ Conn-> exec ( "INSERT INTO MyGuests (ชื่อ, นามสกุล, อีเมล์)
VALUES ( 'จูลี่', 'Dooley', 'julie@example.com') ");
// กระทำการทำธุรกรรม
$ Conn-> กระทำ ();
echo "บันทึกใหม่จะถูกแทรกประสบความสำเร็จ";
}
catch (PDOException $ E)
{
// ถ้าย้อนกลับล้มเหลว
$ Conn-> ย้อนกลับ ();
th echo $ SQL "<br>" $ E-> getMessage ();
}
$ Conn = null;
?>
ใช้งบเตรียม
ขยาย mysqli ให้เป็นวิธีที่สองที่จะแทรกงบ
เราเตรียมงบและพารามิเตอร์ที่ถูกผูกไว้
ขยาย MySQL สามารถส่งข้อมูลได้โดยไม่ต้องมีคำสั่งหรือแบบสอบถามไปยังฐานข้อมูลของ MySQL คุณสามารถเชื่อมโยงหรือ "ผูก" ตัวแปรคอลัมน์
ตัวอย่าง (MySQLi ใช้งบเตรียม)
<php?
$ Servername = "localhost";
$ username = "ชื่อผู้ใช้";
รหัสผ่าน $ = "รหัสผ่าน";
$ Dbname = "myDB";
// สร้างการเชื่อมต่อ
$ Conn = mysqli ใหม่ ($ ServerName, $ ชื่อผู้ใช้รหัสผ่าน $, $ dbname);
// ทดสอบการเชื่อมต่อ
ถ้า ($ conn-> connect_error) {
ตาย ( "การเชื่อมต่อล้มเหลว:" $ conn-> connect_error.);
} else {
$ Sql = "INSERT INTO MyGuests VALUES (,, ???)";
// การ mysqli_stmt_prepare () วัตถุคำสั่งเริ่มต้น
$ Stmt = mysqli_stmt_init ($ Conn);
// งบเตรียม
ถ้า (mysqli_stmt_prepare ($ stmt, $ SQL)) {
// พารามิเตอร์ผูก
mysqli_stmt_bind_param ($ stmt 'SSS', $ FirstName, $ นามสกุล, อีเมล $);
// ตั้งค่าพารามิเตอร์และดำเนินการ
$ นามสกุล = 'จอห์น';
$ นามสกุล = 'กวาง';
$ อีเมล์ = 'john@example.com';
mysqli_stmt_execute ($ stmt);
$ นามสกุล = 'แมรี่';
$ นามสกุล = 'โม';
$ อีเมล์ = 'mary@example.com';
mysqli_stmt_execute ($ stmt);
$ นามสกุล = 'จูลี่';
$ นามสกุล = 'Dooley';
$ อีเมล์ = 'julie@example.com';
mysqli_stmt_execute ($ stmt);
}
}
?>
เราสามารถมองเห็นในตัวอย่างข้างต้นโดยใช้แบบแยกส่วนการจัดการกับปัญหาที่เกิดขึ้น เราสามารถสร้างบล็อกของรหัสสำหรับการอ่านและการจัดการง่ายขึ้น
หมายเหตุพารามิเตอร์ที่ถูกผูกไว้ ลองดูที่ mysqli_stmt_bind_param () รหัสสินค้า:
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
ข้อโต้แย้งผูกพันกับแบบสอบถามและส่งผ่านพารามิเตอร์ไปยังฐานข้อมูล พารามิเตอร์ที่สองคือ "SSS" รายการต่อไปนี้แสดงให้เห็นประเภทของพารามิเตอร์ อักขระบอกอาร์กิวเมนต์ MySQL เป็นสตริง
มันอาจจะเป็นพารามิเตอร์ทั้งสี่ต่อไปนี้:
- I - จำนวนเต็ม
- D - ความแม่นยำสองจำนวนจุดลอยตัว
- s - สตริง
- B - ค่าบูลีน
ประเภทแต่ละพารามิเตอร์ต้องระบุเพื่อให้แน่ใจว่าการรักษาความปลอดภัยข้อมูล ตามประเภทของการตัดสินสามารถลดความเสี่ยงของช่องโหว่ฉีดของ SQL