Làm thế nào để sử dụng PHP để insert into MySQL

làm thế nào để sử dụng php để insert into mysql
sử dụng php để insert into mysql

Thực hiện lệnh Insert trong MySQL

Trước khi vào thực hiện lệnh Insert thì ta cần tạo database, tạo table. Việc tạo bảng gồm những bước sau:

  • Chọn mục MySQL Database ở Control Panel
  • Chọn Tạo Database MySQL mới và Database user mới, nhập vào database name, database username và password rồi nhất nút “Tạo”. Như vậy bạn đã tạo database thành công.
  • Sau đó, bạn truy cập phpMyAdmin, được đặt trong hosting control panel, nhấp vào nút Create Table, sau đó điền tất cả các thông tin cần thiết gồm: Name – Tên cột, Type – Phân loại cột, Length/Values – Xác định độ dài của entry trong cột mà có thể có, Index – Được sử dụng để đánh số từng entries và để tạo mối quan hệ với các bảng khác và một số cột khác. Sau khi đã hoàn thành bảng, bạn hãy nhấn nút Save.

Cú pháp cơ bản để thực hiện lệnh Insert trong MySQL

INSERT INTO ten_bang(ten_truong_1, ten_truong_2, ... ten_truong_n) 

VALUES (gia_tri_1, gia_tri_2, ... gia_tri_n)

sử dụng php để insert into mysql
Lệnh Insert Into trong MySQL

Việc chỉ rõ tên cột trong truy vấn SQL là không bắt buộc nếu bạn đang thêm các giá trị cho tất cả các cột của bảng. Tuy nhiên người thêm vào phải đảm bảo thứ tự của các giá trị theo thứ tự như các cột trong bảng.

INSERT INTO ten_bang VALUES (gia_tri_1, gia_tri_2, ... gia_tri_n)

Cách sử dụng php để insert into mysql dữ liệu

Chúng ta sử dụng php để insert into mysql để thêm dữ liệu vào các bảng trong MySQL. Khi làm việc với cơ sở dữ liệu MySQL, PHP cung cấp cho bạn 3 gói thư viện là MySQLi, PDO và MySQL. Tuy nhiên MySQL không được khuyến nghị sử dụng vì nó không còn được tiếp tục hỗ trợ phát triển từ phiên bản 5.5 và sẽ được gỡ hoàn toàn ra khỏi phiên bản PHP7.

Ngược lại, hai thư viện MySQLi và PDO lại được dùng phổ biến hơn cả, vì chúng được hỗ trợ tich cực bởi nhóm phát triển ngôn ngữ lập trình MySQL và cộng đồng sử dụng. Do đó, trong bài này, chúng tôi sẽ hướng dẫn bạn hai cách viết PHP code để Insert into MySQL database dữ liệu với MySQLi và PDO.

Phương pháp MySQLi

Đầu tiên, bạn cần thiết lập kết nối tới database để có thể bắt đầu sử dụng SQL query Insert trong SQL. Đây là toàn bộ mã code PHP tạo kết nối và insert trong SQL cơ bản (data chúng tôi thêm vào bảng có tên là Students):

<?php

$servername = "mysql.hostinger.co.uk";

$database = "u266072517_name";

$username = "u266072517_user";

$password = "buystuffpwd";

// Create connection

$conn = mysqli_connect($servername, $username, $password, $database);

// Check connection

if (!$conn) {

      die("Connection failed: " . mysqli_connect_error());

}

 echo "Connected successfully";

 $sql = "INSERT INTO Students (name, lastname, email) VALUES ('Thom', 'Vial', '[email protected]')";

if (mysqli_query($conn, $sql)) {

      echo "New record created successfully";

} else {

      echo "Error: " . $sql . "<br>" . mysqli_error($conn);

}

mysqli_close($conn);

?>

Trong đoạn mã dài trên, dòng 3-18 được dùng cho kết nối tới database. Riêng dòng 19 $sql = “INSERT INTO Students (name, lastname, email) VALUES (‘Thom’, ‘Vial’, ‘[email protected]’)”; là dòng thực hiện lệnh Insert Into để thêm dữ liệu vào bảng trong hệ cơ sở dữ liệu MySQL. Dữ liệu sẽ được thêm vào bằng lệnh Insert Into theo tuần tự theo như những giá trị trong dấu ngoặc đơn (name, lastname, email). Bạn có thể đổi các giá trị bên trong dấu ngoặc hay thay đổi thứ tự tùy ý. Đến cột Values, chúng ta sẽ đưa các giá trị cụ thể vào từng cột tương ứng, chẳng hạn ta có name = Thom, lastname = Vial, email = [email protected]

Tiếp đến, dòng 20 – 22 có nhiệm vụ kiểm tra SQL query được thực thi thành công hay không. Do chúng ta viết PHP code để chạy nên SQL query phải được đặt trong dấu nháy đơn. Ở ví dụ này, tất cả những gì trong nháy đơn và sau $sql = là một SQL query.

if (mysqli_query($conn, $sql)) {

     echo "New record created successfully";

}

Nếu thực thi không thành công, ở dòng 23 – 24, nó sẽ hiển thị một thông báo khác để báo lỗi đang xảy ra.

else {

     echo "Error: " . $sql . "<br>" . mysqli_error($conn);

}

Phương pháp PHP Data Object (PDO)

Phương pháp này chỉ khác với phương pháp MySQLi là kết nối tới MySQL database bằng một PDO object. Lúc đó, bạn phải sử dụng nhiều ‘methods‘ PDO (bất kỳ function nào là một phần của bất kỳ object nào) để chuẩn bị và chạy queries. Methods của objects được gọi như sau:

$the_Object->the_Method();

PDO cho phép bạn chuẩn bị trước mã SQL khi nó được thực thi, nhằm đánh giá và chỉnh sửa SQL query sao cho hợp lý trước khi thực thi, tránh các lỗi xảy ra. Do đó, một cuộc tấn công SQL injection có thể được làm chỉ bởi gõ mã SQL trong form điền thông tin. Chẳng hạn như:

// User writes this in the username field of a login form

john"; DROP DATABASE user_table;

// The final query becomes this

"SELECT * FROM user_table WHERE username = john"; DROP DATABASE user_table;

Vì có một cấu trúc SQL code đúng, dấu chấm phẩu ; sẽ thực thi lệnh DROP DATABASE user_table thành một SQL query, sau đó bảng user sẽ bị xóa. Các lệnh được chuẩn bị để không cho phép hai dấu ngoặc kép ” và chấm phẩy ; làm dấu để kết thúc query gốc và mã độc DROP DATABASE sẽ không thể được thực thi.

Hãy lưu ý rằng, với phương pháp PDO, bạn phải luôn dùng prepared statements khi gửi hoặc nhận data. Để sử dụng prepared statements, bạn phải viết một biến mới gọi method prepare() của database object.

Mã nguồn đúng:

<?php

$servername = "mysql.hostinger.com";

$database = "u266072517_name"; 

$username = "u266072517_user";

$password = "buystuffpwd";

$sql = "mysql:host=$servername;dbname=$database;";

$dsn_Options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];

// Create a new connection to the MySQL database using PDO, $my_Db_Connection is an object

try { 

  $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options);

  echo "Connected successfully";

} catch (PDOException $error) {

  echo 'Connection error: ' . $error->getMessage();

}

// Set the variables for the person we want to add to the database

$first_Name = "Thom";

$last_Name = "Vial";

$email = "[email protected]";

// Here we create a variable that calls the prepare() method of the database object

// The SQL query you want to run is entered as the parameter, and placeholders are written like this :placeholder_name

$my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)");

// Now we tell the script which variable each placeholder actually refers to using the bindParam() method

// First parameter is the placeholder in the statement above - the second parameter is a variable that it should refer to

$my_Insert_Statement->bindParam(:first_name, $first_Name);

$my_Insert_Statement->bindParam(:last_name, $last_Name);

$my_Insert_Statement->bindParam(:email, $email);

// Execute the query using the data we just defined

// The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your own messages here

if ($my_Insert_Statement->execute()) {

  echo "New record created successfully";

} else {

  echo "Unable to create record";

}

// At this point you can change the data of the variables and execute again to add more data to the database

$first_Name = "John";

$last_Name = "Smith";

$email = "[email protected]";

$my_Insert_Statement->execute();

// Execute again now that the variables have changed

if ($my_Insert_Statement->execute()) {

  echo "New record created successfully";

} else {

  echo "Unable to create record";

}

Ở dòng 28, 29 và 30, chúng tôi dùng method bindParam() của database object. Nếu bạn sử dụng bindValue() thì cách dùng sẽ khác đi.

  • bindParam() – Phương pháp này đánh giá data khi method execute() được thực thi. Lần đâu tiên scripts gặp method execute() nó thấy $first_Name là “Thom”, gán giá trị đó và chạy query. Khi scripts gặp method execute() thứ 2, nó thấy $first_Name liên quan đến “John”, gán giá trị đó và chạy lại query lần nữa với giá trị mới.
  • bindValue() – method đánh giá data ngay khi bindValue() được nhận. Khi giá trị $first_Name được gán thành “Thom” và bindValue() được thực hiện, nó sẽ được sử dụng mỗi lần method execute() được gọi cho $my_Insert_Statement.

Nếu bạn cập nhật script và thay thế bindParam bằng bindValue, bạn sẽ insert into MySQL “Thom Vial” 2 lần trong database và John Smith sẽ bị bỏ qua.

Như vậy là chúng tôi đã giới thiệu xong hai cách thêm dữ liệu vào bằng cách sử dụng php để insert into mysql. Dù có một chút phức tạp, nhưng chúc các bạn sẽ thao tác thành công nhé.