Phương pháp nào được sử dụng để gửi truy vấn đến cơ sở dữ liệu PHP?

Hướng dẫn này cho biết cách gửi và lưu dữ liệu biểu mẫu vào cơ sở dữ liệu MySQL sau khi gửi bằng PHP. Cần có hiểu biết cơ bản về MySQL và PHP

Bắt đầu nào

  1. Tạo cơ sở dữ liệu và bảng của bạn
    Các cột trong bảng của bạn sẽ phụ thuộc vào cấu trúc biểu mẫu của bạn. Xem hướng dẫn này để xem tên trường hoặc khóa đăng của biểu mẫu nếu bạn không chắc chắn nên thêm cột nào vào bảng cơ sở dữ liệu của mình
  2. Đối với hướng dẫn này, hãy nhớ thêm cột “submission_id” vào bảng của bạn
    Trong biểu mẫu liên hệ mẫu này, bảng trông giống như sau trong phpMyAdmin
Phương pháp nào được sử dụng để gửi truy vấn đến cơ sở dữ liệu PHP?

Ghi chú. Quá trình tạo hoặc chỉnh sửa cơ sở dữ liệu của bạn sẽ phụ thuộc vào thiết lập máy chủ hoặc máy chủ lưu trữ web của bạn. Liên hệ với bộ phận hỗ trợ của nhà cung cấp của bạn để được hỗ trợ

Có nhiều cách để chèn dữ liệu vào cơ sở dữ liệu MySQL và một trong số đó là thông qua mã PHP. Với các phương thức MySQLi và PDO, người dùng có thể chèn dữ liệu vào cơ sở dữ liệu MySQL

Hướng dẫn này sẽ chỉ cho bạn cách CHÈN dữ liệu vào cơ sở dữ liệu MySQL bằng cách sử dụng các tập lệnh PHP

Trước khi chúng tôi bắt đầu hướng dẫn chèn PHP MySQL này, hãy truy cập bảng điều khiển lưu trữ web của bạn

Tải xuống Bảng thuật ngữ dành cho người mới bắt đầu sử dụng web

 

Tạo bảng cho dữ liệu

Bước đầu tiên là tạo một bảng cho dữ liệu. Nếu bạn đã tạo rồi, hãy cuộn xuống phần tiếp theo. Nếu không, hãy làm theo các bước sau

  1. Mở phpMyAdmin trên bảng điều khiển lưu trữ của bạn

Phương pháp nào được sử dụng để gửi truy vấn đến cơ sở dữ liệu PHP?

  1. Mở u123456789_mydatabase và điều hướng đến phần Tạo bảng

Phương pháp nào được sử dụng để gửi truy vấn đến cơ sở dữ liệu PHP?

  1. Đặt tên cho bảng Học sinh và viết 4 vào trường Số cột. Nhấp vào nút Bắt đầu ở gần cuối trang
  2. Một trang mới sẽ xuất hiện. Nhập các thông tin cần thiết cho bảng

Phương pháp nào được sử dụng để gửi truy vấn đến cơ sở dữ liệu PHP?

  1. Nhấn Lưu để tạo bảng mới

Dưới đây là một số giải thích về các cột được sử dụng

  • Tên – Tên cột. Nó sẽ xuất hiện ở đầu bảng
  • Type – Kiểu dữ liệu. Bạn có thể đặt nhiều giá trị khác nhau, bao gồm int, varchar và string. Ví dụ: chọn varchar để nhập tên loại chuỗi, sử dụng chữ cái, không phải số
  • Độ dài/Giá trị – Độ dài mục nhập tối đa cho một cột cụ thể
  • Chỉ mục – Để liệt kê các mục trong bảng, được yêu cầu khi định cấu hình các mối quan hệ của bảng. Chúng tôi khuyên bạn nên luôn có một cột ID khi tạo bảng. Chúng tôi đã sử dụng chỉ mục Chính cho trường ID của mình và đánh dấu A_I, nghĩa là Tăng tự động. Nó tự động liệt kê các mục (1,2,3,4…)

Để biết thêm thông tin về cấu trúc bảng và các cài đặt khả dụng của nó, hãy tham khảo tài liệu chính thức của phpMyAdmin

Cách chèn vào bảng cơ sở dữ liệu MySQL

Có hai phương pháp để CHÈN dữ liệu vào cơ sở dữ liệu MySQL – phương pháp PHP MySQLi và phương pháp Đối tượng dữ liệu PHP (PDO)

Chèn dữ liệu bằng phương pháp MySQLi

Đầu tiên, thiết lập kết nối đến cơ sở dữ liệu. Khi được kết nối, hãy tiến hành INSERT truy vấn MySQL. Dưới đây là một ví dụ mã PHP đầy đủ với các phương thức chèn và kết nối cơ bản

" . mysqli_error($conn);
}
mysqli_close($conn);
?>

Quan trọng. Nếu bạn đang thiết lập cơ sở dữ liệu để sử dụng từ xa, dịch vụ lưu trữ sẽ không nằm trên cùng một máy chủ với cơ sở dữ liệu. Trước tiên, bạn phải thiết lập quyền truy cập MySQL từ xa và sử dụng địa chỉ máy chủ của nó thay vì localhost

Các dòng 2-12 của mã dành cho kết nối thực tế với cơ sở dữ liệu MySQL. Dòng sau trông như thế này

$sql = "INSERT INTO Students (name, lastName, email) VALUES ('Tom', 'Jackson', '[email protected]')";

INSERT INTO là câu lệnh thêm dữ liệu vào bảng cơ sở dữ liệu MySQL đã chỉ định. Trong ví dụ trên, chúng tôi đang thêm dữ liệu vào bảng Học sinh

Giữa dấu ngoặc đơn, tên cột của bảng chỉ định nơi chúng tôi muốn thêm các giá trị (tên, họ, email). Tập lệnh sẽ thêm dữ liệu theo thứ tự đã chỉ định. Nếu chúng ta viết (email, họ, tên), tập lệnh sẽ thêm các giá trị theo thứ tự sai

Phần tiếp theo là câu lệnh VALUES. Ở đây, chúng tôi chỉ định các giá trị trong các cột đã chọn trước đó. Ví dụ của chúng ta sẽ là name = Tom, lastName = Jackson, email = tom@jackson. tld

Ngoài ra, người dùng phải đặt truy vấn SQL giữa dấu ngoặc kép. Trong ví dụ của chúng tôi, mọi thứ được viết trong dấu ngoặc kép sau $sql = là một truy vấn SQL

Trong khi đó, dòng 14-15 của mã kiểm tra xem truy vấn có hoạt động không và hiển thị thông báo thành công

if (mysqli_query($conn, $sql)) {
     echo "New record created successfully";

Phần cuối cùng, dòng 16-18, hiển thị một thông báo khác trong trường hợp truy vấn không thành công. Thay vào đó, nó hiển thị thông báo lỗi SQL

} else {

echo "Error: " . $sql . "
" . mysqli_error($conn); }

Chèn dữ liệu bằng phương pháp đối tượng dữ liệu PHP (PDO)

Để sử dụng phương pháp này, trước tiên hãy thiết lập kết nối cơ sở dữ liệu bằng cách tạo một đối tượng PDO mới

Vì kết nối tới cơ sở dữ liệu MySQL là một đối tượng PDO, nên bạn phải sử dụng các phương thức PDO khác nhau để chuẩn bị và chạy các truy vấn

Các phương thức của các đối tượng được gọi như thế này

$the_Object->the_Method();

PDO cho phép người dùng chuẩn bị, đánh giá và sửa mã SQL trước khi thực thi. Nó có thể ngăn kẻ xấu thực hiện một cuộc tấn công SQL injection đơn giản bằng cách nhập mã SQL vào một biểu mẫu

// Người dùng viết cái này vào trường tên người dùng của biểu mẫu đăng nhập

john"; DROP DATABASE user_table;
// The final query becomes this
"SELECT * FROM user_table WHERE username = john"; DROP DATABASE user_table;

Là một mã SQL đúng về mặt cú pháp, dấu chấm phẩy làm cho DROP DATABASE user_table trở thành một truy vấn SQL mới và xóa bảng người dùng. May mắn thay, các câu lệnh đã chuẩn bị sẵn không cho phép “ và ; . Do đó, một hướng dẫn độc hại để DROP DATABASE sẽ không hoạt động

Quan trọng. Bạn phải luôn sử dụng các câu lệnh đã chuẩn bị khi gửi hoặc nhận dữ liệu từ cơ sở dữ liệu bằng PDO

Để sử dụng các câu lệnh đã chuẩn bị, bạn phải viết một biến mới gọi phương thức chuẩn bị () của đối tượng cơ sở dữ liệu. Kết quả sẽ như thế này

 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 = "Tom";
$last_Name = "Jackson";
$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]";
 
// 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 24-26, chúng ta sử dụng phương thức bindParam() của đối tượng cơ sở dữ liệu. Ngoài ra còn có phương thức bindValue() hoạt động khác

  • bindParam() – đánh giá dữ liệu khi đạt đến phương thức exec(). Lần đầu tiên tập lệnh tiếp cận một phương thức exec(), tập lệnh sẽ thấy rằng $first_Name tương ứng với “Tom”, liên kết giá trị đó và chạy truy vấn. Khi tập lệnh đến phương thức exec() thứ hai, tập lệnh sẽ thấy rằng $first_Name hiện tương ứng với “John”, liên kết giá trị đó và chạy lại truy vấn với các giá trị mới. Lưu ý rằng chúng tôi đã xác định truy vấn một lần và sử dụng lại nó với dữ liệu khác tại các điểm khác nhau trong tập lệnh
  • bindValue() – đánh giá dữ liệu ngay khi đạt được bindValue(). Vì giá trị của $first_Name được đặt thành “Tom” khi đạt đến bindValue(), nên giá trị này sẽ được sử dụng mỗi khi một phương thức exec() được gọi cho $my_Insert_Statement

Lưu ý rằng chúng tôi sử dụng lại biến $first_Name và gán cho nó một giá trị mới lần thứ hai. Nếu bạn kiểm tra cơ sở dữ liệu của mình sau khi chạy tập lệnh này, thì bạn có cả hai tên đã xác định, mặc dù biến $first_Name bằng “John” ở cuối tập lệnh

Phương thức bindParam chấp nhận tham số theo tham chiếu, không theo giá trị. Người dùng chỉ cần gọi bindParam một lần và tập lệnh sẽ chèn các giá trị được cập nhật vào cơ sở dữ liệu

Bạn có thể đọc thêm về cách truyền tham số trong hướng dẫn sử dụng PHP

Xác nhận thành công

Nếu truy vấn mà chúng tôi đã chạy và CHÈN vào cơ sở dữ liệu MySQL thành công, chúng tôi sẽ thấy thông báo sau

Connected Successfully
New record created successfully

Khắc phục các lỗi thường gặp

Đôi khi, bản ghi mới sẽ hiển thị lỗi với phần chèn SQL. May mắn thay, có nhiều cách để sửa các lỗi MySQL này

MySQLi

Nếu thông báo lỗi MySQLi xuất hiện, chúng tôi có thể thử các bản sửa lỗi khác nhau

Ví dụ: nếu chúng tôi có một lỗi cú pháp trong mã của mình, chúng tôi sẽ thấy lỗi sau

Connect successfully

Error: INSERT INTO students {name, lastName, email} VALUES ('Tom', 'Jackson', '[email protected]')

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastName, email} VALUES ('Tom', 'Jackson', '[email protected]')' at line 1"

Như bạn có thể thấy, phần đầu tiên của mã tốt và tập lệnh đã thiết lập kết nối thành công. Tuy nhiên, truy vấn SQL không thành công

$sql = "INSERT INTO Students (name, lastName, email) VALUES ('Tom', 'Jackson', '[email protected]')";
0

Điều này là do lỗi cú pháp khiến tập lệnh không thành công. Lỗi là ở đây

$sql = "INSERT INTO Students (name, lastName, email) VALUES ('Tom', 'Jackson', '[email protected]')";
1

Chúng tôi đã sử dụng sai dấu ngoặc nhọn thay vì dấu ngoặc đơn đơn giản, khiến tập lệnh đưa ra lỗi cú pháp

PDO

Để nhận thông báo lỗi để khắc phục sự cố, người dùng phải đặt chế độ lỗi để hiển thị tất cả các trường hợp ngoại lệ. Đó là những gì được viết ở dòng 12 của kết nối PDO. Vì tất cả các ngoại lệ đều được bật nên mọi vấn đề cụ thể sẽ được hiển thị

Người dùng chỉ nên sử dụng tất cả các ngoại lệ khi phát triển tập lệnh. Nó có thể hiển thị tên bảng và cơ sở dữ liệu mà người dùng nên ẩn khỏi các bên độc hại

Trong trường hợp trên, khi dấu ngoặc nhọn được sử dụng thay vì dấu ngoặc đơn, lỗi trông giống như thế này

$sql = "INSERT INTO Students (name, lastName, email) VALUES ('Tom', 'Jackson', '[email protected]')";
2

Các vấn đề tiềm ẩn khác

  • Chỉ định cột không chính xác như cột không tồn tại hoặc lỗi chính tả
  • Một loại giá trị được gán cho một loại cột khác. Ví dụ: nếu chúng tôi cố gắng gán số 47 cho cột Tên, chúng tôi sẽ gặp lỗi vì nó được coi là một giá trị chuỗi. Nhưng nếu chúng tôi đã chỉ định một số giữa các dấu ngoặc kép, ví dụ: “47”, nó sẽ hoạt động vì số của chúng tôi sẽ là một chuỗi cho cột
  • Truy cập cơ sở dữ liệu MySQL từ xa mà không cần thiết lập Remote MySQL

Tất cả những lỗi đó có thể được sửa dễ dàng bằng cách làm theo hướng dẫn thông báo lỗi hoặc kiểm tra nhật ký lỗi

Đảm bảo trang web của bạn có thể xử lý mọi thứ – từ lưu lượng truy cập cao đến thời gian tải nhanh, v.v. Mua dịch vụ lưu trữ web

Phần kết luận

Ngôn ngữ lập trình PHP cho phép người dùng dễ dàng thêm mới dữ liệu cơ sở dữ liệu MySQL với một vài dòng mã

Trong hướng dẫn này, chúng tôi đã chỉ ra cách sử dụng PHP để CHÈN dữ liệu vào cơ sở dữ liệu MySQL của bạn bằng MySQLi và PDO. Chúng tôi cũng đã giới thiệu cách khắc phục các lỗi kết nối phổ biến

Chúng tôi hy vọng rằng bạn thấy hướng dẫn này hữu ích. Nếu bạn có bất kỳ câu hỏi nào, hãy cho chúng tôi biết trong phần bình luận bên dưới

Tìm hiểu thêm về PHP

Cách cài đặt phpBB trên trang web của bạn
Cách (An toàn) Tạo chuyển hướng PHP
11 Framework PHP tốt nhất
Cách tạo tệp phpinfo
PHP8. 1. Các tính năng mới và ngừng sử dụng
Cách sửa đổi kích thước tải lên tối đa của PHP

Tác giả

Domantas G

Domantas dẫn dắt các nhóm nội dung và SEO về phía trước với những ý tưởng mới và phương pháp tiếp cận vượt trội. Được trang bị kiến ​​thức sâu rộng về SEO và tiếp thị, anh đặt mục tiêu quảng bá Hostinger đến mọi nơi trên thế giới. Trong thời gian rảnh rỗi, Domantas thích trau dồi kỹ năng phát triển web của mình và đi du lịch đến những nơi xa lạ

Thêm từ Domantas G

Phương pháp nào được sử dụng để gửi truy vấn đến cơ sở dữ liệu PHP?

Đồng tác giả

Ignas R

Ignas rất hài lòng khi giúp mọi người giải quyết ngay cả những vấn đề kỹ thuật phức tạp nhất. Mục tiêu hiện tại của anh ấy là viết những bài dễ theo dõi để những vấn đề này sẽ không xảy ra nữa. Trong thời gian rảnh rỗi, Ignas thích chơi trò chơi điện tử và sửa chữa mọi thứ xung quanh nhà của mình

Phương thức nào chịu trách nhiệm gửi truy vấn đến cơ sở dữ liệu trong PHP?

Giải thích. Phương thức mysqli_query() chịu trách nhiệm gửi truy vấn đến cơ sở dữ liệu. Phương thức Query() trước đây đã được sử dụng trong các phiên bản PHP cũ hơn.

Làm cách nào để gửi dữ liệu đến cơ sở dữ liệu trong PHP?

php $connection = mysql_connect("localhost", "root", ""); // Thiết lập kết nối với máy chủ $db = .

Chức năng MySQL nào được sử dụng để gửi truy vấn đến cơ sở dữ liệu?

mysql_query() gửi một truy vấn duy nhất (không hỗ trợ nhiều truy vấn) tới cơ sở dữ liệu hiện đang hoạt động trên máy chủ được liên kết với link_identifier đã chỉ định.

Phương thức nào sau đây chịu trách nhiệm gửi truy vấn đến cơ sở dữ liệu?

1 câu trả lời. Để giải thích tôi sẽ nói. Phương thức mysqli_query() chịu trách nhiệm gửi truy vấn đến cơ sở dữ liệu. Phương thức Query() trước đây đã được sử dụng trong các phiên bản PHP cũ hơn