我已经遇到过相同的问题好几次了,我想我已经找到了一个非常简单和好的解决方案。万一我想多次使用参数,我只是将它们存储到MySQL中
User-DefinedVariable。
这使代码更具可读性,并且您在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}唯一的缺点可能是您需要执行其他MySQL查询-但恕我直言,这是完全值得的。
由于
User-Defined Variables在MySQL中是会话绑定的,因此也不必担心变量会
@term在多用户环境中产生副作用。



