Nếu (mysqli_num_rows ($ kết quả 0 lỗi))

Mysqli_num_rows() dự kiến ​​tham số 1 là mysqli_result là một trong những loại lỗi cơ bản nhất xảy ra trong PHP khi sử dụng các hàm MySQLi

Mục lục

Cảnh báo. Mysqli_num_rows() Yêu cầu Tham số 1 là Mysqli_result

Nếu bạn gặp phải lỗi này, đừng hoảng sợ; . Về cơ bản, “mysqli_num_rows() mong đợi tham số 1 là mysqli_result” là một cảnh báo xảy ra khi tìm nạp dữ liệu bằng các hàm MySQLi

Khi chúng ta sử dụng hàm mysqli_query() với truy vấn SELECT, nó sẽ trả về một số dữ liệu kết quả từ cơ sở dữ liệu. Chúng ta có thể sử dụng hàm mysqli_fetch_array() hoặc mysqli_fetch_assoc() để tìm nạp mọi hàng kết quả

Thí dụ

Ta có một bảng sinh viên gồm 2 cột id và name. ”

Nếu (mysqli_num_rows ($ kết quả 0 lỗi))
Nếu (mysqli_num_rows ($ kết quả 0 lỗi))

và chúng tôi có mã PHP để lấy tên sinh viên như bên dưới

SELECT * FROM `students` WHERE `id`=4");
    while($data = mysqli_fetch_assoc($result)){
        echo $data["name"];
    }
?>

Nếu ta muốn tìm tên sinh viên có id là '1' thì sẽ hiển thị kết quả như bên dưới

đầu ra

Nick

Đoạn mã PHP trên đúng vì có trường có ‘id’ = 1

Bây giờ, nếu chúng tôi cố gắng lấy tên trong đó 'id' = 4

Ở đây xảy ra sự cố về 'Cảnh báo. Mysqli_num_rows() Yêu cầu Tham số 1 là Mysqli_result‘

Cảnh báo này có thể xuất hiện trên trang PHP của bạn hoặc trong lỗi. tệp nhật ký;

Giải pháp

Như chúng ta có thể hiểu từ lời giải thích ở trên rằng mysqli_query() không trả về dữ liệu nào vì không có bản ghi dữ liệu nào tồn tại với 'id' = 4 nhưng chương trình vẫn tiếp tục và chạy truy vấn tiếp theo của mysqli_fetch_assoc(), truy vấn này mong đợi ít nhất một hàng trong $

Để giải quyết vấn đề đó, chúng tôi chỉ cần kiểm tra số lượng kết quả và chỉ tìm nạp dữ liệu nếu có ít nhất 1 hàng trong dữ liệu kết quả

Thêm một quan sát nữa, bạn dường như lưu trữ mật khẩu dưới dạng văn bản thuần túy. Điều này không bao giờ nên được thực hiện. Để xử lý mật khẩu đúng cách, hãy xem Lưu trữ mật khẩu. Làm thế nào để làm nó. [^]

Thêm giải pháp của bạn ở đây

 B   I   U   S  small BIG code var  <   >   &  link [^] encode untab case indent outdent

Xem trước 0

thành viên hiện có

hoặc tham gia với chúng tôi

Tải xuống, Bình chọn, Nhận xét, Xuất bản

Email của bạn

Email này đang được sử dụng. Bạn có cần mật khẩu của bạn?

Mật khẩu tùy chọn

Khi trả lời một câu hỏi xin vui lòng

  1. Đọc kỹ câu hỏi
  2. Hiểu rằng tiếng Anh không phải là ngôn ngữ đầu tiên của mọi người, vì vậy hãy khoan dung với lỗi chính tả và ngữ pháp
  3. Nếu một câu hỏi được diễn đạt kém thì hãy yêu cầu làm rõ, bỏ qua nó hoặc chỉnh sửa câu hỏi và khắc phục sự cố. Xúc phạm không được chào đón
  4. Đừng bảo ai đó đọc hướng dẫn. Rất có thể họ có và không nhận được. Đưa ra câu trả lời hoặc chuyển sang câu hỏi tiếp theo
Hãy làm việc để giúp các nhà phát triển, không làm họ cảm thấy ngu ngốc


Nội dung này, cùng với bất kỳ tệp và mã nguồn liên quan nào, được cấp phép theo Giấy phép Mở Dự án Code (CPOL)

Và 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ác
SQL nào được coi là ba lệnh riêng biệt.
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Một lệnh SELECT hoàn toàn hợp lệ SELECT
DROP TABLE MyTable;
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?

Nếu bạn kiểm tra tài liệu về PHP. mysqli. truy vấn - Thủ công[^] bạn sẽ thấy rõ rằng khi câu lệnh truy vấn không thành công, lệnh gọi sẽ trả về giá trị boolean SAI. Đừng cho rằng lệnh gọi API của bạn luôn làm những gì bạn nghĩ;

Thêm giải pháp của bạn ở đây

 B   I   U   S  small BIG code

$query = "select * from v_student_fee LIKE '%$searchterm'";
0  <   >   &  link [^] encode untab case indent outdent

Xem trước 0

thành viên hiện có

hoặc tham gia với chúng tôi

Tải xuống, Bình chọn, Nhận xét, Xuất bản

Email của bạn

Email này đang được sử dụng. Bạn có cần mật khẩu của bạn?

Mật khẩu tùy chọn

Khi trả lời một câu hỏi xin vui lòng

  1. Đọc kỹ câu hỏi
  2. Hiểu rằng tiếng Anh không phải là ngôn ngữ đầu tiên của mọi người, vì vậy hãy khoan dung với lỗi chính tả và ngữ pháp
  3. Nếu một câu hỏi được diễn đạt kém thì hãy yêu cầu làm rõ, bỏ qua nó hoặc chỉnh sửa câu hỏi và khắc phục sự cố. Xúc phạm không được chào đón
  4. Đừng bảo ai đó đọc hướng dẫn. Rất có thể họ có và không nhận được. Đưa ra câu trả lời hoặc chuyển sang câu hỏi tiếp theo
Hãy làm việc để giúp các nhà phát triển, không làm họ cảm thấy ngu ngốc


Nội dung này, cùng với bất kỳ tệp và mã nguồn liên quan nào, được cấp phép theo Giấy phép Mở Dự án Code (CPOL)