Php 基于url PDO显示结果
我正在使用带有url查询字符串的PDO从数据库中获取结果Php 基于url PDO显示结果,php,mysql,pdo,Php,Mysql,Pdo,我正在使用带有url查询字符串的PDO从数据库中获取结果 url:index.php?bType=doctor&loc=asia|india 代码: $bind = array(); $str=explode('|',$_GET[loc]); foreach ($str as $loc) { $bloc[] = $loc; } $loca = implode("','", $bloc); $btype=$_GET['bType']; $sqlsb = "SELECT *
url:index.php?bType=doctor&loc=asia|india
代码:
$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.=”和(:loca)”中的位置;$bind['loca']=“$loca'”;}
上面的代码什么也得不到
print\u r($bind)
显示Array([b类型]=>doctor[loca]=>asia'、'india)
如果我不使用预先准备好的,它就可以工作
我正在为优化搜索过滤器编写此代码
谢谢
更新
作为课程网站我做了一些改变
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)
显示数组([b类型]=>%doctor%[loca]=>“亚洲”、“印度”)
需要使用
loc
做一些比使用内爆更好的事情。可以这样认为对于LIKE语句中使用的准备好的值,必须将“?”或“%”字符与值一起添加,而不是在sql语句中
$btype = '%'. $btype .'%';
$sqlsb = "SELECT * FROM t_business WHERE type LIKE :btype";
无论数据来自URL、POST、COOKIES、会话、文件、数据库、电子邮件、变量等,都不会改变PDO的工作方式。启用通知,您将看到,
$\u GET[loc]
非常糟糕loc
这里指的是一个名为loc
的常量-当它找不到该常量时,它会放弃并将其转换为字符串。$\u GET['loc']
有什么问题吗?你们都没有投票权。我认为这也会帮助未来银行的人使用b类型
,但不使用loc
。请参阅更新的答案也许本页上的未回答可以帮助你:或者,在网上查找:“pdo绑定声明”。
$btype = '%'. $btype .'%';
$sqlsb = "SELECT * FROM t_business WHERE type LIKE :btype";