Giải thích chức năng kết nối mysql với ví dụ

PHP có ba cách để kết nối với cơ sở dữ liệu MySQL. Chúng được gọi là API cơ sở dữ liệu. Có một phiên bản thủ tục (mysqli_*) sử dụng các chức năng đơn giản. Có hai phiên bản hướng đối tượng (MySQLi, PHP Data Objects (PDO)) sử dụng các lớp. Chúng tương tự nhau và trả về cùng một kết quả

Phiên bản thủ tục thường là lựa chọn tốt hơn cho những người mới bắt đầu chưa biết lập trình hướng đối tượng. Nhiều nhà phát triển PHP có kinh nghiệm thích các phiên bản hướng đối tượng hơn. PDO là một lựa chọn phổ biến cho các nhà phát triển cần làm việc với các cơ sở dữ liệu khác ngoài MySQL vì các chức năng không dành riêng cho MySQL

Bằng cách tìm hiểu bất kỳ API cơ sở dữ liệu nào trong số này, bạn có thể dễ dàng thực hiện chuyển đổi sang API khác sau này. Các khái niệm là như nhau và tên chức năng là tương tự


Phiên bản thủ tục sử dụng mysqli_*

Có năm bước để tương tác với cơ sở dữ liệu trong PHP

  1. Tạo kết nối cơ sở dữ liệu
  2. Cơ sở dữ liệu truy vấn
  3. Làm việc với kết quả trả về
  4. Kết quả trả về miễn phí
  5. Đóng kết nối cơ sở dữ liệu

Bước #1 và #5 chỉ nên xảy ra một lần cho mỗi tập lệnh PHP. Các bước #2-4 có thể xảy ra một lần hoặc nhiều lần trong một tập lệnh


Thiết lập quyền truy cập và thông tin xác thực

Rõ ràng, người dùng cơ sở dữ liệu phải được tạo và cấp đặc quyền để sử dụng cơ sở dữ liệu trước khi có thể sử dụng cơ sở dữ liệu đó trong kết nối

Cách tốt nhất là xác định thông tin đăng nhập cơ sở dữ liệu riêng biệt với mã kết nối cơ sở dữ liệu. Lý tưởng nhất là thông tin đăng nhập sẽ nằm trong một tệp riêng biệt có thể được giữ riêng tư và loại trừ khỏi trình quản lý mã nguồn


1. Tạo kết nối cơ sở dữ liệu

Để tạo kết nối cơ sở dữ liệu trong PHP, hãy sử dụng hàm mysqli_connect(). Phải mất bốn đối số. tên máy chủ, tên người dùng, mật khẩu, tên cơ sở dữ liệu

Giá trị trả về của mysqli_connect() là một "xử lý" kết nối cơ sở dữ liệu. Tay cầm là một đối tượng đại diện cho kết nối đến cơ sở dữ liệu. Bất cứ khi nào một chức năng cơ sở dữ liệu được gọi trong các bước sau, điều khiển sẽ được cung cấp làm đối số. Các nhà phát triển thường gán tay cầm này cho một biến có tên là

4, 
5 hoặc 
6. (PHP. các trang hướng dẫn sử dụng mạng thường gọi nó là "$link" nhưng tên đó không được khuyến nghị sử dụng trong thế giới thực. )

Chức năng mysqli_connect_errno() có thể được sử dụng để xác minh xem nỗ lực kết nối có thành công hay không. Nó trả về số mã lỗi cuối cùng từ lần gọi cuối cùng tới mysqli_connect(). Nếu nó trả về bất kỳ giá trị nào, thì kết nối không thành công. Một kết nối không thành công có thể được xử lý theo nhiều cách, nhưng cách đơn giản nhất là ngăn tất cả các mã trong tương lai thực thi và trả về thông báo lỗi. mysqli_connect_error() và mysqli_connect_errno() có thể được sử dụng để cung cấp thông tin về lỗi


2. cơ sở dữ liệu truy vấn

Khi có kết nối mở với cơ sở dữ liệu, có thể đưa ra các lệnh SQL cho cơ sở dữ liệu. (Sơ lược MySQL)

Các truy vấn được thực hiện bằng cách sử dụng hàm mysqli_query() và cung cấp hai đối số, xử lý kết nối cơ sở dữ liệu và SQL để gửi

mẹo chuyên nghiệp. Việc gán câu lệnh SQL cho một biến rất hữu ích cho việc gỡ lỗi. Giá trị biến có thể được xem bằng cách tạm thời thêm một dòng mã mới ngay trước truy vấn.

7. Điều này có thể giúp xác định các vấn đề khi tạo các câu lệnh SQL phức tạp, được tạo động

Lưu ý rằng không có dấu chấm phẩy ở cuối chuỗi SQL (chỉ có một dấu chấm phẩy ở cuối dòng PHP). Dấu chấm phẩy là tùy chọn khi chỉ gửi một truy vấn SQL qua mysqli_query()

mysqli_query() trả về

  • sai nếu truy vấn không thành công
  • đúng nếu truy vấn thành công và không sử dụng CHỌN
  • một "đối tượng kết quả mysqli" nếu truy vấn đang sử dụng CHỌN

CHÈN, CẬP NHẬT, XÓA và hầu hết các câu lệnh SQL khác chỉ trả về đúng hoặc sai

Các câu lệnh SELECT trả về các bản ghi cơ sở dữ liệu được đóng gói trong một "đối tượng kết quả mysqli". Trong ví dụ trên, đây sẽ là các bản ghi từ bảng sản phẩm. Đối tượng kết quả không phải là một mảng mặc dù theo một số cách, nó hoạt động giống như một. Nếu không có bản ghi nào khớp với truy vấn, thì tập kết quả sẽ vẫn được trả về, nhưng không có bản ghi nào bên trong. Câu lệnh SELECT chỉ trả về false nếu có lỗi xảy ra, thường là do lỗi cú pháp SQL

Các truy vấn CHỌN có thể được theo sau bởi một bài kiểm tra nhanh để đảm bảo sai không được trả về. Điều này sẽ cho phép xử lý bất kỳ câu lệnh SQL xấu nào. (Đây không phải là bước cần thiết cho các truy vấn CHÈN, CẬP NHẬT và XÓA. ) Một chức năng đơn giản có thể làm cho quá trình này trở nên dễ dàng


Lỗi truy vấn

Nếu có lỗi trong khi truy vấn, hàm sẽ không trả về lỗi đó (nó chỉ trả về true/false hoặc một tập kết quả). Thay vào đó, kết nối cơ sở dữ liệu mở giữ thông tin về lỗi

Hàm mysqli_error() sẽ trả về thông báo lỗi cho truy vấn thất bại cuối cùng trên kết nối cơ sở dữ liệu


3. Làm việc với kết quả trả về

Nếu một truy vấn trả về đúng hoặc sai (như với CHÈN, CẬP NHẬT, XÓA) thì thật dễ dàng để làm việc với các kết quả bằng cách sử dụng một câu lệnh điều kiện đơn giản

Nếu một truy vấn trả về một "đối tượng kết quả mysqli", thì nó yêu cầu mã bổ sung để có thể hoạt động với dữ liệu bên trong đối tượng kết quả. Thông thường, những bản ghi này sẽ được truy xuất bằng cách lặp qua tập hợp


Truy xuất một hàng dữ liệu

Hàm mysqli_fetch_assoc() sẽ truy xuất một hàng dữ liệu từ tập hợp và di chuyển con trỏ bên trong của nó sang hàng tiếp theo (để chuẩn bị cho lần truy xuất hàng tiếp theo). Bởi vì nó tự tăng lên sau mỗi lần gọi, vòng lặp

8 rất hữu ích

Lưu ý rằng biến

9 đang được gán hàng dữ liệu đầu tiên mỗi lần thông qua vòng lặp. Khi không còn bản ghi nào trong tập hợp, mysqli_fetch_assoc() sẽ trả về 
0 và vòng lặp sẽ kết thúc

Đối với mỗi hàng, mysqli_fetch_assoc() trả về một mảng kết hợp. Các giá trị cho mỗi cột có thể được truy xuất bằng cách sử dụng tên cột

';
  }
?>

Số hàng kết quả

Đôi khi thay vì lặp qua từng bản ghi, sẽ rất hữu ích khi biết có bao nhiêu bản ghi trong kết quả

Hàm mysqli_num_rows() trả về số hàng trong đối tượng kết quả


ID được chèn lần cuối

Thông thường, khi một bản ghi mới được thêm vào cơ sở dữ liệu bằng INSERT INTO, dữ liệu được gửi không bao gồm khóa chính của bản ghi

1. Cơ sở dữ liệu không cần ID nếu AUTO_INCREMENT đã được đặt. Nó sẽ chỉ định ID khả dụng tiếp theo cho bản ghi mới

Tuy nhiên, mysqli_query() chỉ trả về true hoặc false khi truy vấn được thực thi. Điều này tạo ra một vấn đề. làm cách nào mã PHP có thể biết ID nào vừa được cơ sở dữ liệu chỉ định?

Hàm mysqli_insert_id() sẽ yêu cầu kết nối cơ sở dữ liệu trả về giá trị của trường AUTO_INCREMENT đã được cập nhật bởi truy vấn trước đó. Nó trả về 0 nếu không có truy vấn trước đó trên kết nối hoặc nếu truy vấn không cập nhật giá trị AUTO_INCREMENT

hàng bị ảnh hưởng

Khi các bản ghi được sửa đổi bằng cách sử dụng CHÈN, CẬP NHẬT và XÓA, sẽ rất hữu ích khi biết có bao nhiêu hàng bị ảnh hưởng bởi thay đổi. Dòng lệnh MySQL báo cáo số này sau một truy vấn, nhưng mysqli_query() thì không, nó chỉ trả về true hoặc false

Hàm mysqli_affected_rows() trả về số hàng bị ảnh hưởng bởi truy vấn trước đó trên kết nối cơ sở dữ liệu


4. Kết quả trả về miễn phí

Bước này không thực sự cần thiết nhưng nó là một thói quen lập trình tốt. Khi tất cả mã đã hoàn thành công việc với đối tượng kết quả, nó có thể bị lãng quên. Bộ nhớ đang giữ kết quả có thể được giải phóng để có thể sử dụng ở nơi khác. Điều này có thể quan trọng khi làm việc với các tập dữ liệu lớn

Hàm mysqli_free_result() xóa đối tượng kết quả và giải phóng bộ nhớ liên kết với nó


5. Đóng kết nối cơ sở dữ liệu

Bước cuối cùng là đóng kết nối cơ sở dữ liệu đã được mở khi bắt đầu

Một số nhà phát triển bỏ qua bước này, nhưng nó được coi là một cách làm không tốt. Sau một thời gian không hoạt động, cơ sở dữ liệu sẽ xác định kết nối đã bị hủy bỏ và đóng nó lại. Điều này không hiệu quả, sử dụng hết tài nguyên máy chủ và có thể ảnh hưởng đến khả năng xử lý các truy vấn đến của cơ sở dữ liệu. Nhiều cơ sở dữ liệu được cấu hình để chỉ cho phép số lượng kết nối tối đa. Các kết nối không còn được sử dụng phải được đóng đúng cách để có sẵn các kết nối mới

Hàm mysqli_close() có thể được sử dụng để đóng kết nối cơ sở dữ liệu hiện có

Các nhà phát triển có thể xem xét đặt mã để đóng kết nối cơ sở dữ liệu ở chân trang của bố cục trang để đảm bảo rằng nó luôn được thực thi sau cùng


Mẹo chuyên nghiệp

Có thể hữu ích khi xác định các chức năng tùy chỉnh gọi các hàm mysqli_* tích hợp sẵn

Điều này có lợi thế là làm cho tên ngắn hơn và "cơ sở dữ liệu bất khả tri", nghĩa là không còn bị ràng buộc với MySQL. Nếu trong tương lai, cần sử dụng một API cơ sở dữ liệu khác, thì có thể cập nhật các chức năng tùy chỉnh thay vì mọi lệnh gọi chức năng trong toàn bộ ứng dụng

Nó cho phép thông tin đăng nhập được tự động thêm vào. Nó cho phép kiểm tra lỗi được bao gồm trong mã chức năng

Chức năng kết nối MySQL là gì?

Kết nối MySQL bằng PHP Script . Hàm này nhận sáu tham số và trả về mã định danh liên kết MySQL nếu thành công hoặc FALSE nếu thất bại. PHP provides mysqli contruct or mysqli_connect() function to open a database connection. This function takes six parameters and returns a MySQL link identifier on success or FALSE on failure.

Hàm mysqli_connect() trả về cái gì?

Giá trị trả về của mysqli_connect() là một "xử lý" kết nối cơ sở dữ liệu. Tay cầm là một đối tượng đại diện cho kết nối đến cơ sở dữ liệu

Làm cách nào để kết nối cơ sở dữ liệu với MySQL?

Để kết nối với Cơ sở dữ liệu MySQL .
Nhấp vào tab Dịch vụ
Mở rộng nút Trình điều khiển từ Database Explorer. .
Nhập tên người dùng và mật khẩu. .
Nhấn OK để chấp nhận thông tin đăng nhập. .
Nhấn OK để chấp nhận giản đồ mặc định
Nhấp chuột phải vào URL Cơ sở dữ liệu MySQL trong cửa sổ Dịch vụ (Ctrl-5)

Làm thế nào kết nối với cơ sở dữ liệu trong MySQL giải thích với ví dụ trong PHP?

php $servername = "localhost"; . "