我正在使用 php MySQLi 类来比 MySQL 更安全,但我有一个问题。
我有一列数据,其中包含撇号。我正在将该列与一个没有撇号的变量进行比较,它是一个干净的字符串,来自我的 url。在我的旧代码中,我可以轻松地在 SQL 语句中执行 Replace(category_name, '''', '') ,而撇号不会成为一个因素。
如果我把它扔到 phpmyadmin 中,它会起作用:
SELECT DISTINCT merchant_category
FROM products
WHERE Replace( category_name, '''', '' ) = 'childrens accessories'
ORDER BY merchant_category
但是对于 MySQLi,这是一个真正的问题,因为它不会解析它们:
$params = array();
$params[0] = "Replace(category_name, '''', '')";
$params[1] = $this->db->escape($this->cleanDBValue(requestQS("cat1")));
//print_r($params);
$rs = $this->db->rawQuery("SELECT DISTINCT merchant_category FROM products WHERE ? = ? ORDER BY merchant_category ", $params);
我试图与查询匹配的数据是:
children's accessories
而且我没有得到任何结果。我怎样才能绕过这个?