Trong hướng dẫn này, bạn sẽ học cách sử dụng PHP để chèn dữ liệu vào cơ sở dữ liệu MySQL bằng PDO hoặc MySQLi. Các đoạn mã hoàn chỉnh để sao chép / dán.

Bạn đang xem : php chèn dữ liệu bài đăng vào mysql


PHP

Cách sử dụng PHP để chèn dữ liệu vào cơ sở dữ liệu MySQL

Cách sử dụng PHP để chèn dữ liệu vào cơ sở dữ liệu MySQL

Trong hướng dẫn này , bạn sẽ học cách CHÈN dữ liệu vào cơ sở dữ liệu MySQL của mình từ các tập lệnh PHP . Có hai phương pháp mà bạn có thể sử dụng, MySQLi và PDO. Trước khi bắt đầu hướng dẫn chèn MySQL PHP này, bạn cần truy cập vào bảng điều khiển lưu trữ của mình.

Tải xuống sách điện tử: Tăng tốc trang web của bạn. 8 mẹo thực tế hiệu quả

Nếu bạn không chắc chắn về cách thiết lập kết nối MySQL của mình, bạn có thể xem hướng dẫn PHPMySQL này bao gồm các bước quan trọng nhất để làm việc với PHP và cơ sở dữ liệu.

Tạo bảng (Tùy chọn)

Trước tiên, chúng tôi phải tạo một bảng cho dữ liệu của bạn. Nếu bạn đã tạo, hãy cuộn xuống phần tiếp theo. Tạo bảng là một quá trình đơn giản mà bạn có thể thực hiện với phpMyAdmin nằm trong bảng điều khiển lưu trữ của bạn.

Sau khi đăng nhập vào trang phpMyAdmin, bạn sẽ thấy một cái gì đó tương tự như sau:

trang phpmyadmin_main

Chúng tôi sẽ tạo một bảng có tên Học sinh cho cơ sở dữ liệu u104357129_name của chúng tôi. Bạn có thể tạo bảng mới bằng cách nhấp vào nút Tạo bảng ở gần cuối trang. Sau đó, bạn sẽ được chuyển đến một trang mới, nơi bạn có thể nhập tất cả thông tin cần thiết cho bảng của mình:

Vì đây là một thiết lập đơn giản, để biết thêm thông tin về cấu trúc của bảng / cơ sở dữ liệu và loại cài đặt nào bạn có thể sử dụng với các cột, hãy tham khảo tài liệu chính thức của phpMyAdmin .

Hiện tại, đây là một số giải thích về các cột mà chúng tôi đã sử dụng:

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

Nhấp vào Lưu và bảng của bạn sẽ được tạo.

Mã PHP để CHÈN Dữ liệu vào Cơ sở dữ liệu MySQL

Có hai phương pháp bạn có thể sử dụng để CHÈN dữ liệu vào cơ sở dữ liệu MySQL của mình. Phương pháp PHP MySQLi và Đối tượng dữ liệu PHP hoặc phương pháp PDO.

Phương pháp MySQLi

Trước tiên, bạn cần thiết lập kết nối với cơ sở dữ liệu. Sau khi hoàn tất, chúng tôi có thể tiếp tục với truy vấn MySQL INSERT . Đây là một ví dụ đầy đủ về mã PHP với các phương thức chèn và kết nối cơ bản:

 & lt;? php
$ servername = "mysql.hostinger.co.uk";
$ database = "u266072517_name";
$ tên người dùng = "u266072517_user";
$ password = "buystuffpwd";

// Tạo kết nối

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

// Kiểm tra kết nối

if (! $ conn) {
      die ("Kết nối không thành công:". mysqli_connect_error ());
}
 
echo "Đã kết nối thành công";
 
$ sql = "CHÈN VÀO Học viên (tên, họ, email) GIÁ TRỊ ('Kiểm tra', 'Kiểm tra', 'Testing@tesing.com')";
if (mysqli_query ($ conn, $ sql)) {
      echo "Đã tạo thành công bản ghi mới";
} khác {
      echo "Lỗi:". $ sql. "& lt; br & gt;" . mysqli_error ($ conn);
}
mysqli_close ($ conn);

? & gt; 

Phần đầu tiên của mã (dòng 3 – 18 ) dành cho kết nối thực tế với cơ sở dữ liệu. Chúng tôi sẽ không xem lại phần này, tuy nhiên, nếu bạn muốn biết ý nghĩa của từng dòng mã, hãy xem của chúng tôi về cách kết nối với hướng dẫn cơ sở dữ liệu .

Vì vậy, hãy bắt đầu với dòng số 19 :

 $ sql = "CHÈN VÀO Sinh viên (tên, họ, email) GIÁ TRỊ ('Kiểm tra', 'Kiểm tra', 'Testing@tesing.com')"; 

Đây là dòng quan trọng nhất của mã PHP vì nó chèn dữ liệu vào cơ sở dữ liệu MySQL. INSERT INTO là một câu lệnh thêm dữ liệu vào bảng cơ sở dữ liệu được chỉ định. Trong ví dụ này, chúng tôi đang thêm dữ liệu vào bảng Sinh viên .

Xem Thêm  Loại trả về phương thức trong Java- Decodejava.com - cách trả về một phương thức trong java

Đi xa hơn, giữa dấu ngoặc đơn, chúng tôi có các tên cột trong bảng được chỉ định cho nơi chúng tôi muốn thêm các giá trị: (tên, họ, email) . Dữ liệu sẽ được thêm vào theo thứ tự được chỉ định. Nếu chúng tôi viết (email, họ, tên) , các giá trị sẽ được thêm vào không đúng thứ tự.

Phần tiếp theo là câu lệnh VALUES . Ở đây chúng tôi chỉ định các giá trị của chúng tôi để chèn vào các cột đã chỉ định trước đó. Bằng cách đó, mỗi cột đại diện cho một giá trị cụ thể. Ví dụ: trong trường hợp của chúng tôi, nó sẽ như sau: name = Test, lastname = Testing, email = Testing@testing.com .

Một điều đáng nói khác là chúng tôi vừa chạy một truy vấn SQL bằng mã PHP. Các truy vấn SQL phải được đặt giữa các dấu ngoặc kép. Trong ví dụ của chúng tôi, mọi thứ giữa dấu ngoặc kép và được viết sau $ sql = là một truy vấn SQL.

Phần tiếp theo của mã ( 20 – 22 dòng) kiểm tra xem truy vấn của chúng tôi có thành công hay không:

 if (mysqli_query ($ conn, $ sql)) {
     echo "Đã tạo thành công bản ghi mới";
} 

Nó chỉ hiển thị thông báo thành công nếu truy vấn mà chúng tôi đã chạy thành công.

Và phần cuối cùng ( 22 – 24 dòng) hiển thị một thông báo khác trong trường hợp truy vấn của chúng tôi không thành công:

 khác {
     echo "Lỗi:". $ sql. "& lt; br & gt;" . mysqli_error ($ conn);
} 

Nó sẽ cung cấp cho chúng tôi một thông báo SQL lỗi trong trường hợp có sự cố.

Phương pháp đối tượng dữ liệu PHP (PDO)

Như với ví dụ trước, chúng tôi cần kết nối với cơ sở dữ liệu trước tiên, việc này được thực hiện bằng cách tạo một đối tượng PDO mới – hướng dẫn này sẽ hiển thị bạn làm thế nào nếu bạn không chắc chắn. Vì kết nối đến cơ sở dữ liệu MySQL là một đối tượng PDO, bạn phải sử dụng các phương pháp PDO khác nhau (bất kỳ hàm nào là một phần của bất kỳ đối tượng nào) để chuẩn bị và chạy các truy vấn. Phương thức của các đối tượng được gọi như thế này:

 $ the_Object- & gt; the_Method ();

PDO cho phép bạn chuẩn bị mã SQL trước khi nó được thực thi. Truy vấn SQL được đánh giá và sửa chữa trước khi chạy. Một cuộc tấn công chèn SQL đơn giản có thể được thực hiện chỉ bằng cách nhập mã SQL vào một trường trên biểu mẫu. Ví dụ:

 // Người dùng viết điều 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;

// Truy vấn cuối cùng trở thành
"CHỌN * TỪ user_table WHERE tên người dùng = john"; DROP DATABASE user_table; 

Vì có mã SQL chính xác 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à bảng người dùng của bạn sẽ bị xóa. Các câu lệnh chuẩn bị không cho phép các ký tự ; kết thúc truy vấn ban đầu và lệnh độc hại DROP DATABASE sẽ không bao giờ được thực thi.

Quan trọng! Bạn nên luôn sử dụng các câu lệnh đã chuẩn bị sẵn khi gửi hoặc nhận dữ liệu từ cơ sở dữ liệu với 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.

Vào đúng mã:

 & lt;? php
$ servername = "mysql.hostinger.com";
$ database = "u266072517_name";
$ tên người dùng = "u266072517_user";
$ password = "buystuffpwd";
$ sql = "mysql: host = $ servername; dbname = $ database;";
$ dsn_Options = [PDO :: ATTR_ERRMODE = & gt; PDO :: ERRMODE_EXCEPTION];

// Tạo một kết nối mới đến cơ sở dữ liệu MySQL bằng PDO, $ my_Db_Connection là một đối tượng
thử {
  $ my_Db_Connection = new PDO ($ sql, $ tên người dùng, $ mật khẩu, $ dsn_Options);
  echo "Đã kết nối thành công";
} catch (PDOException $ error) {
  echo 'Lỗi kết nối:'. $ error- & gt; getMessage ();
}

// Đặt các biến cho người mà chúng ta muốn thêm vào cơ sở dữ liệu
$ first_Name = "Kiểm tra";
$ last_Name = "Thử nghiệm";
$ email = "Testing@testing.com";

// Ở đây chúng ta tạo một biến gọi phương thức chuẩn bị () của đối tượng cơ sở dữ liệu
// Truy vấn SQL bạn muốn chạy được nhập dưới dạng tham số và trình giữ chỗ được viết như sau: placeholder_name
$ my_Insert_Statement = $ my_Db_Connection- & gt; standard ("CHÈN VÀO Sinh viên (tên, họ, email) VALUES (: first_name,: last_name,: email)");

// Bây giờ chúng ta cho script biết biến nào mà mỗi trình giữ chỗ thực sự đề cập đến bằng cách sử dụng phương thức bindParam ()
// Tham số đầu tiên là trình giữ chỗ trong câu lệnh trên - tham số thứ hai là một biến mà nó nên tham chiếu đến
$ my_Insert_Statement- & gt; bindParam (': first_name', $ first_Name);
$ my_Insert_Statement- & gt; bindParam (': last_name', $ last_Name);
$ my_Insert_Statement- & gt; bindParam (': email', $ email);

// Thực thi truy vấn bằng cách sử dụng dữ liệu chúng ta vừa xác định
// Phương thức execute () trả về TRUE nếu thành công và FALSE nếu không, cho phép bạn viết thông báo của riêng mình tại đây
if ($ my_Insert_Statement- & gt; execute ()) {
  echo "Đã tạo thành công bản ghi mới";
} khác {
  echo "Không thể tạo bản ghi";
}

// Tại thời điểm này, bạn có thể thay đổi dữ liệu của các biến và thực thi lại để thêm nhiều dữ liệu hơn vào cơ sở dữ liệu
$ first_Name = "John";
$ last_Name = "Smith";
$ email = "john.smith@email.com";
$ my_Insert_Statement- & gt; execute ();

// Thực thi lại khi các biến đã thay đổi
if ($ my_Insert_Statement- & gt; execute ()) {
  echo "Đã tạo thành công bản ghi mới";
} khác {
  echo "Không thể tạo bản ghi";
} 

Trên các dòng 28, 29 30 , chúng tôi 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 () rất khác.

  • bindParam () – Phương thức này đánh giá dữ liệu khi đến phương thức execute () . Lần đầu tiên tập lệnh tiếp cận phương thức execute () , nó thấy rằng $ first_Name tương ứng với “Kiểm tra”, liên kết giá trị đó và chạy truy vấn. Khi tập lệnh đến phương thức execute () thứ hai, tập lệnh 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. Điều quan trọng cần nhớ là chúng tôi đã xác định truy vấn một lần và sử dụng lại truy vấn đó với các dữ liệu khác nhau tại các điểm khác nhau trong tập lệnh.
  • bindValue () – Phương thức này sẽ đánh giá dữ liệu ngay sau đó khi đạt đến bindValue () . Vì giá trị của $ first_Name được đặt thành “Kiểm tra” khi đạt đến bindValue () , nó sẽ được sử dụng mỗi khi thực thi () > phương thức được gọi cho $ my_Insert_Statement .
Xem Thêm  Phần tử gốc XML - phần tử gốc trong xml là gì

Lưu ý rằng chúng tôi sử dụng lại biến $ first_Name và đặt cho nó một giá trị mới vào 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, 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. Hãy nhớ rằng PHP đánh giá toàn bộ tập lệnh trước khi thực sự chạy nó.

Nếu bạn cập nhật tập lệnh để thay thế bindParam bằng bindValue , bạn sẽ chèn vào MySQL “Test Testing” hai lần trong cơ sở dữ liệu và John Smith sẽ bị bỏ qua.

Xác nhận Thành công và Giải quyết Các Vấn đề Thường gặp

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 như:

 Kết nối thành công
Bản ghi mới đã được tạo thành công

Khắc phục sự cố Các lỗi Thường gặp

Tuy nhiên, đôi khi bản ghi mới sẽ có lỗi với phần chèn SQL. Nhưng đừng lo lắng, bạn có thể thực hiện một số cách để sửa các lỗi MySQL này.

MySQLi

Nếu thông báo lỗi MySQLi được hiển thị, chúng tôi có thể thực hiện các phương pháp sau để khắc phục. Ví dụ: chúng ta hãy tạo một lỗi cú pháp trong mã của chúng ta, nếu mắc phải, chúng ta sẽ thấy một cái gì đó tương tự như sau:

 Kết nối thành công
Lỗi: CHÈN VÀO sinh viên {name, lastname, email} VALUES ('Kiểm tra', 'Kiểm tra', 'Testing@testing.com')
Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp phù hợp để sử dụng gần '{name, lastname, email} VALUES (' Test ',' Testing ',' Test @ testingcom ')' tại dòng 1 "

Như bạn có thể thấy, phần đầu tiên của mã là tốt, kết nối đã được thiết lập thành công, nhưng truy vấn SQL của chúng tôi đã gặp sự cố.

 "Lỗi: INSERT INTO Students {name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com') Bạn có lỗi trong cú pháp SQL của bạn; hãy kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp phù hợp để sử dụng gần '{name, lastname, email} VALUES (' Thom ',' Vial ','thom.v@some.com ')' ở dòng 1 "

Rất tiếc, có một lỗi cú pháp khiến tập lệnh của chúng tôi không thành công. Lỗi là ở đây:

 $ sql = "INSERT INTO Students {name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')" ;

Chúng tôi đã sử dụng dấu ngoặc nhọn thay vì dấu ngoặc đơn. Vì điều này không chính xác nên tập lệnh của chúng tôi gặp lỗi cú pháp.

PDO

Trên dòng 7 của kết nối PDO, chế độ lỗi được đặt thành hiển thị tất cả các trường hợp ngoại lệ . Nếu điều này nằm ngoài kịch bản và truy vấn không thành công, bạn sẽ không nhận được bất kỳ thông báo lỗi nào. Khi bật ngoại lệ, vấn đề cụ thể sẽ hiển thị.

Điều này thường chỉ được sử dụng khi phát triển một tập lệnh vì nó có thể làm lộ cơ sở dữ liệu và tên bảng, mà bạn có thể muốn ẩn với bất kỳ ai có thể đang cố gắng truy cập một cách độc hại vào dữ liệu của bạn. Trong trường hợp ở trên, trong đó dấu ngoặc nhọn được sử dụng thay vì dấu ngoặc đơn, lỗi sẽ tương tự như sau:

 Lỗi nghiêm trọng: Không có ngoại lệ 'PDOException' với thông báo 'SQLSTATE [42000]: Lỗi cú pháp hoặc vi phạm quyền truy cập: 1064 Bạn có lỗi trong cú pháp SQL của mình; & lt; code & gt; hãy kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp phù hợp để sử dụng gần '{name, lastname, email} VALUES (' Thom ',' Vial ',' thom.v@some.com ')' ở dòng 1 "& lt; / code & gt;

Các sự cố có thể xảy ra khác mà bạn có thể gặp phải:

  • Các cột được chỉ định không chính xác (cột không tồn tại hoặc lỗi chính tả).
  • Một loại giá trị đang đượ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 một số 47 vào cột Tên , chúng tôi sẽ gặp lỗi vì nó được cho là 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, chẳng hạn như “47” , thì điều đó sẽ hiệu quả vì số của chúng tôi sẽ được gán dưới dạng một chuỗi cho cột.
  • Đang cố gắng nhập dữ liệu vào một bảng không tồn tại hoặc mắc lỗi chính tả của bảng.
Xem Thêm  C # if, if ... else, if ... else if và Câu lệnh if lồng nhau (Với Ví dụ) - c # nếu khác nếu

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

Sau khi nhập dữ liệu thành công, chúng tôi sẽ thấy nó được thêm vào cơ sở dữ liệu của chúng tôi. Đây là ví dụ về bảng mà chúng tôi đã thêm dữ liệu của mình vào khi xem từ phpMyAdmin .

Kết luận

Trong hướng dẫn này, bạn đã học cách sử dụng PHP để CHÈN dữ liệu vào cơ sở dữ liệu MySQL của mình bằng cách sử dụng MySQLi > và PDO . Bạn cũng đã học cách khắc phục các lỗi kết nối phổ biến. Biết cách sử dụng PHP để thêm dữ liệu vào cơ sở dữ liệu MySQL rất hữu ích cho dù bạn đang học cách viết mã hay xây dựng trang web của mình.

Hướng dẫn này có hữu ích không?

Tác giả

Domantas G.

Domantas dẫn dắt đội ngũ nội dung và SEO với những ý tưởng mới và cách tiếp cận độc đáo. Được trang bị kiến ​​thức sâu rộng về SEO và tiếp thị, anh ấy đặt mục tiêu truyền 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 kỳ lạ.


Xem thêm những thông tin liên quan đến chủ đề php chèn dữ liệu bài đăng vào mysql

Lập trình PHP & MySQL cơ bản – nâng cao Bài 17: Kết nối cơ sở dữ liệu với PHP & MySQL

alt

  • Tác giả: Học Viện Lập Trình
  • Ngày đăng: 2017-04-29
  • Đánh giá: 4 ⭐ ( 1709 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lập Trình PHP Hướng dẫn các bạn tự làm 1 trang website do chính mình làm nên.

PHP MySQL: Kết nối cơ sở dữ liệu với MySQL Database

  • Tác giả: diendanhocweb.com
  • Đánh giá: 5 ⭐ ( 2941 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: PHP MySQL: Kết nối cơ sở dữ liệu với MySQL Database – Trước khi bắt đầu học tạo bất kì trang web hay blog nào, thì các bạn cũng cần phải nắm rõ từng b

Thêm dữ liệu với MySQL trong PHP » Cafedev.vn

  • Tác giả: cafedev.vn
  • Đánh giá: 5 ⭐ ( 1707 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hàm mysql_query () trong PHP được sử dụng để chèn bản ghi trong bảng. Kể từ PHP 5.5, hàm mysql_query () là bị phản đối sử dụng. Bây giờ bạn nên sử dụng một trong 2 lựa chọn thay thế.

Insert dữ liệu vào MySql bằng PHP

  • Tác giả: toidicode.com
  • Đánh giá: 4 ⭐ ( 5546 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Sau khi đã kết nối thành công đến MySql thì chúng ta có thể sử dụng hoàn toàn các chức năng của MySql và bài hôm nay mình sẽ giới thiệu đến mọi người thêm dữ liệu vào trong MySql bằng PHP….

Chèn dữ liệu vào trong MySQL Database sử dụng PHP

  • Tác giả: vietjack.com
  • Đánh giá: 5 ⭐ ( 1654 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Bài 23: Insert dữ liệu MySql bằng PHP

  • Tác giả: newnet.vn
  • Đánh giá: 4 ⭐ ( 6394 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

PHP insert dữ liệu vào MySQL thông qua form

  • Tác giả: hocwebchuan.com
  • Đánh giá: 3 ⭐ ( 1638 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Sử dụng các thành phần form, kết hợp các câu lệnh MySQL để thêm record cho table, các câu lệnh này được viết bên trong PHP.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php