像使用字母数字字符串 bindParam 的查询

Like query with alphanum string bindParam

我刚开始使用 pdo 语句,当我尝试在 phpMyadmin sql 控制台中设置这样的查询时,它工作正常:

SELECT name, number FROM client WHERE number LIKE '%30%'

结果:

|name|number|
|antonio|30857898H|
|andrés|30987454U|

但是当我使用方法 bindParam() 或方法 bindValue() 或类型值如 PDO::PARAM_STRPDO::PARAM_INT 传递参数时,行为是查询停止在第一个数字,不获取其他字符。列都是 'char'...

这是我的方法:

function getQueryData($key,$i_query){

    require_once '../queryList.php';//get all the querys
//$key is an array like this $key[0][0] = ':number', $key[0][1] = '%30%'    
    $this->consulta = $this->conInstance->prepare($gQuery[$i_query]);

    foreach ($key as $clave => $valor) {
        $this->consulta->bindParam($key[$clave][0], $key[$clave][1]);
        }       
    $this->consulta->execute();

    $this->consulta->setFetchMode(PDO::FETCH_ASSOC);

    return $this->consulta;
    //Make the bucle on the system
}

非常感谢这个社区的帮助,这里的人都很棒

尝试将 like 匹配子句中的参数内容隔离为

SELECT name, number FROM client WHERE number LIKE concat('%', '30', '%')

例如

SELECT name, number FROM client WHERE number LIKE concat('%', :your_param , '%')

或同等学历

使用绑定参数,您需要使用“%”传递整个字符串

查询:

SELECT name, number FROM client WHERE number LIKE :your_param

代码:

$value = 'some value';
$this->consulta->bindParam('your_param', '%'.  $value . '%');