sql >> Database teknologi >  >> RDS >> Mysql

Brug bundet parameter flere gange

Jeg har kørt over det samme problem et par gange nu, og jeg tror, ​​jeg har fundet en ret enkel og god løsning. Hvis jeg vil bruge parametre flere gange, gemmer jeg dem bare i en MySQL User-Defined Variable .
Dette gør koden meget mere læsbar, og du behøver ingen yderligere funktioner i 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
}

Den eneste ulempe kan være, at du skal lave en ekstra MySQL-forespørgsel - men det er absolut det værd.
Siden User-Defined Variables er sessionsbundne i MySQL, er der heller ingen grund til at bekymre sig om variablen @term forårsager bivirkninger i flerbrugermiljøer.



  1. Sådan fungerer UUID() i MariaDB

  2. Hvorfor tager Microsoft SQL Server 2012-forespørgsler minutter over JDBC 4.0, men sekund(er) i Management Studio?

  3. SQLite AVG

  4. COT() Eksempler i SQL Server