mysql - 当涉及限制语法时如何在codeigniter中绑定查询
问题描述
我正在使用codeigniter,并且为了安全起见,我正在尝试使用查询绑定来转义查询,但是我在使用限制语法时遇到了麻烦。
在我进一步解释之前,请查看下面的查询;
我的查询
$query = "
SELECT * FROM messages
WHERE id = ?
AND public = ?
ORDER BY `messages`.`time` DESC LIMIT ?, ?
";
// Step one, escaping all queries
$bind = array($id, $public, $start, $max);
$query = $this->db->query($query, $bind);
// Step two, using the query above, and inserting it as a string into a "custom query handeler function"
return $this->db->escape_str($this->handel_all_queries($query));
问题一:
所以,使用DESC LIMIT ?, ?
给我一个错误。当它没有使用查询绑定进行转义时,它可以完美地工作(例如,如果我们将限制语法表示为DESC LIMIT $start, $max
。但显然,这样做是不安全的,我希望像查询的其余部分一样转义它。
问题二:
然后我想在另一个处理所有查询调用的函数中使用“查询作为字符串”。该函数被调用handel_all_queries
。
而我用来尝试实现这一点的代码是 -> return $this->db->escape_str($this->handel_all_queries($query));
。我想, $query 可以用作字符串来转移到下一个函数,但事实并非如此。
注意 简而言之,这是我想做的,但这些都是非常不受保护的。
$query = "
SELECT * FROM messages
WHERE id = $id
AND public = $public
ORDER BY `messages`.`time` DESC LIMIT $start, $max
";
return $this->db->escape_str($this->handel_all_queries($query));
提前致谢
解决方案
推荐阅读
- java - Spring AWS SQS - MessageConversionException
- django - 如何在 Django 中使搜索更准确?
- wordpress - 在 woocommerce 中向客户发送/保存订单详细信息之前处理卡
- c++ - 从双精度数静态转换为整数时的奇怪行为
- asp.net - 异常详细信息:System.Security.SecurityException:请求失败
- node.js - 如何为 node.js 设置路径
- python - Django - 确认弹出窗口
- javascript - 如何添加 \n 以输入按键
- reactjs - ReactJs:onClick 被抢先调用
- python - Python SymPy 在复数上分解多项式