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

Použijte vázaný parametr vícekrát

Několikrát jsem teď prošel stejným problémem a myslím, že jsem našel docela jednoduché a dobré řešení. V případě, že chci parametry použít vícekrát, uložím je do User-Defined Variable MySQL .
Kód je díky tomu mnohem čitelnější a v PHP nepotřebujete žádné další funkce:

$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
}

Jedinou nevýhodou může být, že musíte provést další dotaz MySQL - ale i tak to stojí za to.
Vzhledem k tomu, že User-Defined Variable jsou v MySQL vázané na relaci, není také třeba se starat o proměnnou @term způsobující vedlejší účinky v prostředí s více uživateli.



  1. Hibernační dialekt pro orákulum 12c

  2. Vraťte řádky v přesném pořadí, v jakém byly vloženy

  3. Funkce AVG() v PostgreSQL

  4. Multi-DC PostgreSQL:Nastavení pohotovostního uzlu v jiné geografické poloze přes VPN