Sự cố do dữ liệu gây ra
Nhiều khả năng có một số ký tự được chuyển đổi hoặc không thể in được trong dữ liệu đầu vào (hoặc cơ sở dữ liệu). Ví dụ:có thể có một ký tự dòng cấp dữ liệu hoặc một ký hiệu được mã hóa đặc biệt hoặc một số ký tự như <
và >
được chuyển đổi thành các thực thể HTML. Do đó, truy vấn chứa <[email protected]>
sẽ không bao giờ khớp với văn bản <[email protected]>
.
Vấn đề là, đây chỉ là phỏng đoán và không ai có thể cho bạn biết vấn đề thực sự là gì, vì đó là của bạn cơ sở dữ liệu, của bạn dữ liệu đầu vào và chỉ bạn có thể tìm thấy vấn đề.
Tôi đã viết một bài viết giải thích cách gỡ lỗi các sự cố PDO của bạn .
Để gỡ lỗi một vấn đề cụ thể, bạn cần
- đảm bảo rằng báo cáo lỗi đầy đủ được bật cho cả PDO và PHP. Nó thực sự hữu ích, hiển thị cho bạn các lỗi đánh máy không thường xuyên, lỗi chính tả và những lỗi tương tự
- xem xét kỹ lưỡng cả dữ liệu trong cơ sở dữ liệu và dữ liệu đầu vào để tìm ra sự khác biệt.
bin2hex()
hàm sẽ hữu ích, hiển thị tất cả các ký tự không thể in và đã chuyển đổi, trong cả cơ sở dữ liệu và đầu vào.
Sự cố do thông tin xác thực kết nối
Một vấn đề thường xuyên khác là khi bạn có một số cơ sở dữ liệu và kết nối với một cơ sở dữ liệu sai không có dữ liệu được yêu cầu. Sự cố này tương tự với sự cố này , vì vậy chỉ cần làm theo quy trình tương tự, không kiểm tra danh sách bảng mà chỉ kiểm tra các hàng dữ liệu.
Một lưu ý không liên quan nhưng quan trọng
Tuy nhiên, có một lưu ý nhỏ nhưng rất quan trọng:tuyên bố chuẩn bị của bạn là mã hàng hóa điều đó không có gì bảo vệ . Đây là cách nó phải là:
$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = ?';
$result = $link->prepare($sql);
$result->execute([$email_number,$email_f]);
$number_of_rows = $result->fetchColumn();