我使用 PDO 和url查询字符串
从数据库中获取结果 url: index.php?bType=doctor&loc=asia|india
CODE:
$bind = array();
$str=explode('|',$_GET[loc]);
foreach ($str as $loc)
{
$bloc[] = $loc;
} $loca = implode("','", $bloc);
$btype=$_GET['bType'];
$sqlsb = "SELECT * FROM t_business WHERE 1=1";
if(isset($_GET['bType'])){ $sqlsb .=" AND type like :btype"; $bind['btype']='%'. $btype .'%';}
if(isset($ _ GET ['loc'])){$ sqlsb。=“AND location IN(:loca)”; $绑定[ '轨迹'] = “ '$轨迹'”;}
$qsb = $db->prepare($sqlsb);
$qsb->execute($bind);
上面的代码什么都没有..
print_r($bind)
显示Array ( [btype] => doctor [loca] => asia','india )
如果我这样做而不使用准备工作。
我正在编写此代码以优化搜索过滤器。
由于
更新
AS CoursesWeb anwserd我做了更改
if(isset($_GET['bType'])){ $sqlsb .=" AND type like :btype"; $bind['btype']='%'. $btype .'%';}
if(isset($_GET['loc'])){ $sqlsb .=" AND location IN (:loca)"; $bind['loca']="'$loca'";}
适用于:btype
,但不适用于:loca
print_r($bind)
显示array ( [btype] => %doctor% [loca] => 'asia','india' )
需要使用loc
做一些比使用implode..think所做的更好的事情
答案 0 :(得分:0)
对于LIKE语句中使用的准备值,“?”或“%”字符必须与值一起添加,而不是在sql语句中。
$btype = '%'. $btype .'%';
$sqlsb = "SELECT * FROM t_business WHERE type LIKE :btype";