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

MySQL, KDE RÁD nepracuje s více poli pomocí php a pdo bind

Problém je pravděpodobně v tom $this->phone je při spuštění dotazu prázdný.

V takovém případě bude dotaz SELECT * FROM [...] OR WHERE phone LIKE '%%' která vždy vše vrátí.

Řešení:vynechejte kritéria pro telefon, pokud nejsou uvedena, nebo (upozornění na hackování! ) použijte hodnotu, která se v tomto sloupci nikdy nevyskytuje.

Dalším způsobem, jak toho dosáhnout, je změnit dotaz na něco jako

SELECT *
  FROM directory
 WHERE name LIKE :name 
   AND :name_provided = 1
    OR phone LIKE :phone
   AND :phone_provided = 1

A pak svažte :phone_provided na 1, pokud $this->phone je definováno, 0 jinak. Podobně s :name_provided .




  1. Výpočet rozdílů hodnot mezi dvěma záznamy v Eloquent

  2. mysql trigger uložený trigger je již používán příkazem, který vyvolal uložený trigger

  3. Spojte 3 tabulky v SQL

  4. C# MySQL Connection Pooling