Ik heb hetzelfde probleem nu een paar keer tegengekomen en ik denk dat ik een vrij eenvoudige en goede oplossing heb gevonden. Als ik parameters meerdere keren wil gebruiken, sla ik ze gewoon op in een MySQL User-Defined Variable
.
Dit maakt de code veel leesbaarder en je hebt geen extra functies in PHP nodig:
$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
}
Het enige nadeel kan zijn dat je een extra MySQL-query moet doen, maar het is absoluut de moeite waard.
Sinds User-Defined Variables
sessiegebonden zijn in MySQL hoeft u zich ook geen zorgen te maken over de variabele @term
bijwerkingen veroorzaken in omgevingen met meerdere gebruikers.