Как запрос с алфавитной строкой bindParam - PullRequest
0 голосов
/ 14 ноября 2018

Я новичок в работе с операторами pdo, и когда я пытаюсь установить такой запрос в консоли phpMyadmin sql, он работает нормально:

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

Результат:

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

Но когда я передаю параметры с помощью метода bindParam() или метода bindValue() или со значением типа, например PDO::PARAM_STR или PDO::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
}

Большое спасибо за помощь в этом сообществе, люди здесь фантастические

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

С параметрами привязки вам нужно передать всю строку с помощью '%'

запрос:

SELECT name, number FROM client WHERE number LIKE :your_param

код:

$value = 'some value';
$this->consulta->bindParam('your_param', '%'.  $value . '%');
0 голосов
/ 14 ноября 2018

попробуйте выделить содержание параметра в похожем предложении, как

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

например

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

или эквивалент

...