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.