sql >> Databáze >  >> RDS >> Mysql

Problém s odpovídajícími řádky v databázi pomocí PDO

Problémy způsobené daty

S největší pravděpodobností jsou ve vstupních datech (nebo databázi) nějaké převedené nebo netisknutelné znaky. Může to být například znak odřádkování nebo zvláštně zakódovaný symbol nebo některé znaky, jako je < a > převedeny na HTML entity. Výsledkem je, že dotaz obsahuje <[email protected]> se nikdy nebude shodovat s textem &lt;[email protected]&gt; .

Problém je v tom, že je to jen odhad a nikdo vám nemůže říct, o jaký problém se skutečně jedná, protože je to váš databáze, vaše vstupní data a pouze vy můžete najít problém.

Napsal jsem článek, který vysvětluje jak ladit problémy s PDO .

Chcete-li ladit konkrétní problém, potřebujete

  • ujistěte se, že je povoleno úplné hlášení chyb pro PDO i PHP. Opravdu to pomáhá, zobrazuje vám občasné typografické chyby, pravopisné chyby a podobně
  • prozkoumejte data v databázi i vstup, abyste našli rozdíl. bin2hex() pomůže funkce, která odhalí všechny netisknutelné a převedené znaky v databázi i na vstupu.

Problémy způsobené přihlašovacími údaji připojení

Dalším častým problémem je situace, kdy máte několik databází a připojujete se ke špatné, která nemá požadovaná data. Tento problém je podobný tomuto , takže postupujte podle stejného postupu, pouze nekontrolujte seznam tabulek, ale datové řádky.

Irelevantní, ale důležitá poznámka

Na okraj, ale velmi důležité:vaše připravené prohlášení je kód kultu nákladu který nic nechrání . Zde je návod, jak to musí být:

$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(); 



  1. Jak zabezpečit MySQL:Část první

  2. Přidejte se ke mně se speciálním hostem Michalem Barem z týmu MS Access!

  3. Zábavnost poddotazu Oracle

  4. Jak spustit skript SQL Plus v PowerShell