Saya telah mengalami masalah yang sama beberapa kali sekarang dan saya pikir saya telah menemukan solusi yang cukup sederhana dan bagus. Jika saya ingin menggunakan parameter beberapa kali, saya hanya menyimpannya ke User-Defined Variable
MySQL .
Ini membuat kode lebih mudah dibaca dan Anda tidak memerlukan fungsi tambahan apa pun di 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
}
Satu-satunya kelemahan mungkin adalah Anda perlu melakukan kueri MySQL tambahan - tetapi menurut saya itu sangat berharga.
Sejak User-Defined Variable
terikat sesi di MySQL juga tidak perlu khawatir tentang variabel @term
menyebabkan efek samping di lingkungan multi-pengguna.