显示基于URL PDO的结果

时间:2013-12-21 15:51:55

标签: php mysql pdo

我使用 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所做的更好的事情

1 个答案:

答案 0 :(得分:0)

对于LIKE语句中使用的准备值,“?”或“%”字符必须与值一起添加,而不是在sql语句中。

$btype = '%'. $btype .'%';
$sqlsb = "SELECT * FROM t_business WHERE type LIKE :btype";