ORDER BY 如何使用 PDO 参数绑定

ORDER BY 直接使用 PDO 参数绑定无效,因为参数绑定是bindVaule,绑定的是值。ORDER BY :field :order 中的:field :order都不是值。


// 排序
$order    = input('order') == 'asc' ? 'asc' : 'desc';
$sortby   = input('?sortby') ? input('sortby') : 'id';
$allow_field = ['id','list_order','create_time'];
if(in_array($sortby, $allow_field)){
  $key = array_search($sortby,$allow_field);
  $sortby = $allow_field[$key];
}

$sql .= " ORDER BY $sortby $order";

$sth = $dbh->prepare($sql);
$sth->bindValue(':start', $start, \PDO::PARAM_INT);
$sth->bindValue(':per_page', $per_page, \PDO::PARAM_INT);
$sth->execute();
$articles = $sth->fetchAll(\PDO::FETCH_ASSOC);





参考:

https://stackoverflow.com/questions/2542410/how-do-i-set-order-by-params-using-prepared-pdo-statement

修改时间 2016-07-17

真诚赞赏,手留余香
赞赏
随机推荐
CSS3 counter 的用法
Javascript循环
JavaScript 数组
php判断是手机还是电脑访问
PHP解析XML文件
PDO 中 bindParam 和 bindValue 的区别
jquery原生幻灯
使用 Photoshop 创建矢量图标库 Iconfont
PM2 日志管理
PHP文件上传进度:使用 Session 的 upload_progress