我正在使用以下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。
我的问题是查询未按我的要求进行过滤。
如您所见,在行(#34)中,TOU658作为键agencia_modelo的值
我正在从iOS应用程序调用PHP函数,我只想获取以TOU656作为键agencia_model的值的行,但也从过滤结果中接收到第34行。
编辑
string(87)“从tb_modelos中选择*,其中1和(agencia_modelo喜欢吗?)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”:“ CHRYSLER NEON”, “ agencia_modelo”:“ TOU656”},{“ id_modelo”:16,“ nombre_modelo”:“ CHRYSLER PACIFICA”,“ agencia_modelo”:“ TOU656”},{“ id_modelo”:15,“ nombre_modelo”:“” CHRYSLER 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“:” TOU656“},{” i d_modelo“:30,” nombre_modelo“:” JEEP牧马人“,” 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“}]}
最佳答案
如果参数$searchWord
不为空,则设置值'%'
?
如果为agencia_modelo LIKE '%'
,则查询结果未按agencia_modelo
列进行过滤。
if(!empty($searchWord))
{
$searchWord = '%' ; // <--- Here
$statement->bind_param("s", $searchWord );
}
关于php - PHP函数中的奇怪过滤器结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42103577/