PHP函数中出现奇怪的过滤结果

时间:2017-02-08 02:21:44

标签: php mysql

我正在使用以下PHP函数来过滤MySQL表:

  public function buscarModelos($searchWord)
    {
        $returnValue = array();

        $sql = "select * from tb_modelos  where 1";

        if(!empty($searchWord))
        {
            $sql .= " and ( agencia_modelo LIKE ?  )";
              $sql .= " ORDER BY nombre_modelo";

        }

        $statement = $this->conn->prepare($sql);

        if (!$statement)
            throw new Exception($statement->error);

        if(!empty($searchWord))
        {
          $searchWord = '%' ;
          $statement->bind_param("s",  $searchWord );
        }

        $statement->execute();

        $result = $statement->get_result();

         while ($myrow = $result->fetch_assoc()) 
         {
           $returnValue[] = $myrow;
         }

        return $returnValue;
    } 

我需要过滤$ searchWord,在这种情况下$ searchWord = TOU656。

我的问题是查询没有按我的意愿过滤。

enter image description here

如您所见,有一行(#34)将TOU658作为键agencia_modelo的值

我从iOS应用程序调用PHP函数,我只想获取具有TOU656作为键agencia_model值的行,但第34行也是作为过滤结果的一部分接收的。

修改

string(87)“select * from tb_modelos where 1 and(agencia_modelo LIKE?)ORDER BY nombre_modelo”string(1)“%”{“friends”:[{“id_modelo”:34,“nombre_modelo”:“CHRYSLER 200“,”agencia_modelo“:”TOU658“},{”id_modelo“:2,”nombre_modelo“:”CHRYSLER 300“,”agencia_modelo“:”TOU656“},{”id_modelo“:7,”nombre_modelo“:”克莱斯勒NEON“,”agencia_modelo“:”TOU656“},{”id_modelo“:16,”nombre_modelo“:”CHRYSLER PACIFICA“,”agencia_modelo“:”TOU656“},{”id_modelo“:15,”nombre_modelo“:”克莱斯勒TOWN& COUNTRY“,”agencia_modelo“:”TOU656“},{”id_modelo“:6,”nombre_modelo“:”CHRYSLER VISION“,”agencia_modelo“:”TOU656“},{”id_modelo“:4,”nombre_modelo“ :“DODGE ATOS”,“agencia_modelo”:“TOU656”},{“id_modelo”:5,“nombre_modelo”:“DODGE ATTITUDE”,“agencia_modelo”:“TOU656”},{“id_modelo”:32,“nombre_modelo” :“DODGE AVENGER”,“agencia_modelo”:“TOU656”},{“id_modelo”:13,“nombre_modelo”:“DODGE DURANGO”,“agencia_modelo”:“TOU656”},{“id_modelo”:14,“nombre_modelo” :“DODGE GRAND CARAVAN”,“agencia_modelo”:“TOU656”},{“id_modelo”:8,“nombre_modelo” :“DODGE JOURNEY”,“agencia_modelo”:“TOU656”},{“id_modelo”:25,“nombre_modelo”:“FIAT 500”,“agencia_modelo”:“TOU656”},{“id_modelo”:26,“nombre_modelo” :“FIAT 500 L”,“agencia_modelo”:“TOU656”},{“id_modelo”:27,“nombre_modelo”:“FIAT 500 X”,“agencia_modelo”:“TOU656”},{“id_modelo”:29,“ nombre_modelo“:”FIAT DUCATO“,”agencia_modelo“:”TOU656“},{”id_modelo“:21,”nombre_modelo“:”FIAT MOBI“,”agencia_modelo“:”TOU656“},{”id_modelo“:23,” nombre_modelo“:”FIAT PALIO“,”agencia_modelo“:”TOU656“},{”id_modelo“:24,”nombre_modelo“:”FIAT PALIO ADVENTURE“,”agencia_modelo“:”TOU656“},{”id_modelo“:22, “nombre_modelo”:“FIAT UNO”,“agencia_modelo”:“TOU656”},{“id_modelo”:11,“nombre_modelo”:“JEEP CHEROKEE”,“agencia_modelo”:“TOU656”},{“id_modelo”:10, “nombre_modelo”:“JEEP COMPASS”,“agencia_modelo”:“TOU656”},{“id_modelo”:12,“nombre_modelo”:“JEEP GRAND CHEROKEE”,“agencia_modelo”:“TOU656”},{“id_modelo”:9 ,“nombre_modelo”:“JEEP PATRIOT”,“agencia_modelo”:“TOU656”},{“id_modelo”:31,“nombre_modelo”:“JEEP RENEGADE”,“agencia_modelo”:“TOU65 6“},{”id_modelo“:30,”nombre_modelo“:”JEEP WRANGLER“,”agencia_modelo“:”TOU656“},{”id_modelo“:18,”nombre_modelo“:”RAM 700“,”agencia_modelo“:” TOU656“},{”id_modelo“:17,”nombre_modelo“:”RAM PICKUP“,”agencia_modelo“:”TOU656“},{”id_modelo“:19,”nombre_modelo“:”RAM PROMASTER“,”agencia_modelo“:” TOU656“},{”id_modelo“:20,”nombre_modelo“:”RAM PROMASTER RAPID“,”agencia_modelo“:”TOU656“}}}

1 个答案:

答案 0 :(得分:0)

如果参数$searchWord不为空,请设置值'%'

如果agencia_modelo LIKE '%',则查询结果不会按列agencia_modelo进行过滤。

if(!empty($searchWord))
{
    $searchWord = '%' ; // <--- Here
    $statement->bind_param("s",  $searchWord );
}