我怎么能用LIKE做bindParam?

时间:2015-02-19 16:08:36

标签: php

我正在尝试使用bindParam创建一个LIKE。当我尝试执行它会引发异常。

我怎么能这样做?

public function getLocalByNome($nomeLocal){
        $stm = $this->conexao->prepare("SELECT * FROM locais WHERE nome LIKE ?");
        $stm->bindParam(1, "%".$nomeLocal."%", PDO::PARAM_STR);
        $stm->execute();
        $lista = $stm->fetchAll();

        return $lista;
    }

例外:

  

致命错误:无法在第94行的/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php中通过引用传递参数2

1 个答案:

答案 0 :(得分:1)

你可以做两件事之一。

$tempString = "%".$nomeLocal."%";
$stm->bindParam(1, $tempString, PDO::PARAM_STR);

$stm->bindParam(1, $tempString = "%".$nomeLocal."%", PDO::PARAM_STR);

抛出此错误是因为您正在绑定变量,如您所说

$stm->bindParam(1, $tempString, PDO::PARAM_STR);
$tempString = 'something else';

当你执行语句时,它将使用something else,即使你在将它绑定到pdo语句之后设置它。