Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Użyj powiązanego parametru wiele razy

Kilka razy natknąłem się na ten sam problem i myślę, że znalazłem całkiem proste i dobre rozwiązanie. W przypadku, gdy chcę użyć parametrów wiele razy, po prostu przechowuję je w MySQL User-Defined Variable .
Dzięki temu kod jest bardziej czytelny i nie potrzebujesz żadnych dodatkowych funkcji w PHP:

$sql = "SET @term = :term";

try
{
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(":term", "%$term%", PDO::PARAM_STR);
    $stmt->execute();
}
catch(PDOException $e)
{
    // error handling
}


$sql = "SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term";

try
{
    $stmt = $dbh->prepare($sql);
    $stmt->execute();
    $stmt->fetchAll();
}
catch(PDOException $e)
{
    //error handling
}

Jedyną wadą może być to, że musisz wykonać dodatkowe zapytanie MySQL - ale imho jest to całkowicie tego warte.
Ponieważ User-Defined Variables są powiązane z sesją w MySQL, nie musisz się również martwić o zmienną @term powodując skutki uboczne w środowiskach wielu użytkowników.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przechowywać adres zgodny z IPv6 w relacyjnej bazie danych?

  2. Dowiedz się więcej o uprawnieniach na poziomie tabeli MySQL

  3. Entity Framework tworzy nazwę tabeli w liczbie mnogiej, ale widok oczekuje nazwy tabeli w liczbie pojedynczej?

  4. Utwórz nową tabelę, wybierając dane z innych tabel za pomocą CREATE TABLE AS

  5. JSON_TYPE() – Uzyskaj typ wartości JSON w MySQL