Проблеми, причинени от данните
Най-вероятно във входните данни (или база данни) има някои преобразувани или непечатаеми знаци. Например може да има символ за преместване на ред или специално кодиран символ или някои знаци като <
и >
преобразувани в HTML обекти. В резултат на това заявката съдържа <[email protected]
>код> никога няма да съответства на текст
<[email protected]
>
.
Проблемът е, че това е само предположение и никой не може да ви каже какъв е действителният проблем, защото е ваш база данни, вашата входни данни и самовие може да намери проблема.
Написах статия, която обяснява как да отстраните грешки във вашите PDO проблеми .
За да отстраните конкретен проблем, трябва
- уверете се, че пълното отчитане на грешки е активирано както за PDO, така и за PHP. Наистина помага, като ви показва случайни печатни грешки, правописни грешки и други подобни
- разгледайте внимателно както данните в базата данни, така и входните данни, за да откриете разликата.
bin2hex()
функцията би помогнала, разкривайки всички непечатаеми и преобразувани знаци както в базата данни, така и във входа.
Проблеми, причинени от идентификационните данни за връзката
Друг често срещан проблем е, когато имате няколко бази данни и се свържете с грешната, която няма исканите данни. Този проблем е подобен на този , така че просто следвайте същата рутина, като проверявате не списъка с таблици, а редовете с данни.
Неуместна, но важна забележка
Отстрани, но въпреки това много важно:вашето подготвено изявление е код на cargo cult който ненищо не защитава . Ето как трябвата бъде:
$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();