RedBeanPHP:Find 中的值不起作用
Posted
技术标签:
【中文标题】RedBeanPHP:Find 中的值不起作用【英文标题】:RedBeanPHP: Values in Find don't work 【发布时间】:2013-02-25 17:01:26 【问题描述】:我使用下面的示例对表中的结果进行排序,但是 orderby 变量似乎不会影响结果的顺序。我无法访问底层 SQL 查询来查看 RedBean 正在做什么,我已经检查过 $sortorder 和 $sort 是正确的值。
$needles = R::find('needle',
' haystack = :haystack ORDER BY :sortorder :sort',
array(
':sort' => $sort
':sortorder'=>$sortorder,
':haystack'=>$haystack
)
);
【问题讨论】:
这真的是您的问题吗?您有一个名为“needle”的表,其中有一列名为“haystack”? 是的,我已经设置了一张桌子,这样我就可以绕着 Redbean 转,但是 Order BY 命令没有任何效果 编辑您的帖子并显示var_dump($needles);
【参考方案1】:
参数绑定用于值,order-by子句使用列和SQL语句。
RedBeanphp 依赖于 PDO 参数绑定,这对于(除其他外)防止 SQL 注入非常有用。
这里是关于 PHP 中 PDO 参数绑定限制的讨论: Why doesn't binding parameter in ORDER BY clause order the results?
【讨论】:
【参考方案2】:但是,您可以在之前轻松准备查询字符串:
$query = sprintf('ORDER BY %s %s LIMIT :size', $column, $sortOrder);
$items = R::find(
'item',
$query,
array(
'size' => (int) $size
)
);
【讨论】:
以上是关于RedBeanPHP:Find 中的值不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当指针指向数组时,为啥 operator(*) 的值不起作用?