Không bao giờ nối chuỗi để tạo lệnh SQL. Nó khiến bạn dễ bị tấn công SQL Injection vô tình hoặc cố ý có thể phá hủy toàn bộ cơ sở dữ liệu của bạn. Thay vào đó, hãy luôn sử dụng Truy vấn được tham số hóa
Khi bạn nối các chuỗi, bạn sẽ gặp sự cố vì SQL nhận các lệnh như
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'Trích dẫn mà người dùng đã thêm sẽ chấm dứt chuỗi khi có liên quan đến SQL và bạn gặp sự cố. Nhưng nó có thể tồi tệ hơn. Nếu tôi đi cùng và gõ cái này thay vào đó. "x';DROP TABLE MyTable;--" Sau đó, SQL nhận được một lệnh rất khácSQL nào được coi là ba lệnh riêng biệt. SELECT * FROM MyTable WHERE StreetAddress = 'x';Một lệnh CHỌN hoàn toàn hợp lệ_______2_______Một lệnh "xóa bảng" hoàn toàn hợp lệ
Và mọi thứ khác là một bình luận
Vì vậy, nó làm. chọn bất kỳ hàng phù hợp nào, xóa bảng khỏi DB và bỏ qua mọi thứ khác
Vì vậy, LUÔN LUÔN sử dụng các truy vấn được tham số hóa. Hoặc chuẩn bị khôi phục DB của bạn từ bản sao lưu thường xuyên. Bạn thường xuyên sao lưu phải không?
Khắc phục sự cố đó trong toàn bộ ứng dụng của bạn - và nếu bạn bỏ lỡ một sự cố, ai đó sẽ tìm thấy nó - và sự cố bạn nhận thấy có thể sẽ biến mất cùng lúc
Bạn có số dòng của lỗi, chức năng và lỗi. Kết hợp với mục nhập thủ công ở trên, có quá đủ để khắc phục sự cố. Nhìn vào lời gọi hàm của bạn và xem tài liệu nói nó sẽ trông như thế nào. Nó khác rất rõ ràng. Cái nào bị thiếu và nó nên ở vị trí thứ nhất hay thứ hai?
Nếu bạn cảm thấy nó sẽ hữu ích hơn, bạn có thể hỏi họ1Tsme1941 nói
cháu tôi có thể là người điều hành
Bấm để mở rộng
bạn copy từ đâu mà bị lỗi. Như đã viết, nó sẽ không bao giờ hoạt động. Tôi nghi ngờ bạn đã chuyển đổi một phần từ lệnh gọi hướng đối tượng, như trong các chủ đề trước bạn đã sử dụng đối tượng mysqli. Tuy nhiên, bạn cũng có nhiều phong cách khác nhau trong cùng một mã trong các chủ đề trước đó nên tôi không thể chắc chắn.1Tsme1941 nói
Tôi đã tra cứu "ví dụ cập nhật mysqli php" và sao chép
Bấm để mở rộng
Trong mọi trường hợp, bạn sẽ được phục vụ tốt hơn bằng cách xử lý các ví dụ từ tài liệu php. Trong trường hợp này, bạn đang sử dụng kiểu thủ tục, kiểu hướng đối tượng cũng sẽ hoạt động. Tôi đã đề cập đến nó trước đây, nhưng tôi sẽ nói lại lần nữa. Tôi không đề nghị trộn chúng. Bạn có thể, nhưng nó làm cho nó khó đọc
Hàm trả về false khi thất bại. Nếu thành công, hàm sẽ thực hiện các hành động được xác định trong truy vấn, chẳng hạn như CHỌN, HIỂN THỊ, MÔ TẢ, v.v.
Ví dụ Chức năng Sử dụng
Sau đây là một ví dụ về cách sử dụng hàm mysqli_query. Bắt đầu bằng cách tạo cơ sở dữ liệu mẫu, bảng và dữ liệu như được hiển thị trong các truy vấn bên dưới
TẠO CƠ SỞ DỮ LIỆU src;
SỬ DỤNG src;
DROP BẢNG NẾU TỒN TẠI stack_mapping;
TẠO BẢNG stack_mapping (
id INT AUTO_INCREMENT PRIMARY KEY,
server_name VARCHAR(50) NOT NULL,
địa chỉ VARCHAR(100) NOT NULL,
Installed_version VARCHAR(50),
tool_id INT
) ;
CHÈN VÀO stack_mapping ( server_name , address, installed_version, tool_id)
GIÁ TRỊ ('SQL Server', 'localhost. 1433', '15. 0', 1),
('Elasticsearch', 'localhost. 9200', '8. 4', 2),
('Redis', 'localhost. 6379', '6. 0', 3),
('PostgreSQL', 'localhost. 5432', '14. 5', 4),
('MySQL', 'localhost. 3306', '8. 0', NULL) ;
Ví dụ – Sử dụng Hàm mysqli_query() trong PHP để Tìm nạp Bản ghi
Ví dụ dưới đây minh họa cách sử dụng hàm để tìm nạp các bản ghi từ bảng
Trong trường hợp này, hàm ở trên kết nối với cơ sở dữ liệu và sau đó sử dụng hàm mysqli_function để tìm nạp các hàng từ bảng stack_mapping
Cuối cùng, chúng tôi xác định số lượng hàng được trả về bằng hàm mysqli_num_rows. Kết quả đầu ra như hình minh họa
Đã trả về ROW 5
GHI CHÚ. Nếu bạn có một lượng lớn dữ liệu cần tìm nạp, hãy sử dụng chế độ kết quả MYSQLI_USE_RESULT
Phần kết luận
Trong bài đăng này, chúng ta đã thảo luận về cách sử dụng hàm mysqli_fetch trong PHP để thực hiện một truy vấn nhất định tới cơ sở dữ liệu