首页 > 解决方案 > Codeigniter(或 PHP)删除部分查询字符串

问题描述

我有一个基于 Codigniter-3.0.4 的网站。ODBC 数据库查询多年来一直运行良好。或者我是这么想的。昨天我发现它只是去掉了查询绑定字符串的所有部分,介于%00%1F(ASCII 控制字符)之间。例如x%11y%z变成xy%z.

$sql = "SELECT TOP 100 "
        . "D1001 as 'part_number', "
        . "D1021 as 'description', "
        . "D1063 as 'hs_code' "
        . "FROM PULAGER "
        . "WHERE "
        . "D1001 LIKE ? OR "
        . "D1021 LIKE ? "
        . "ORDER BY D1001";

$contains = 'x%11y%z';
$sql_result = $this->db->query($sql, array($contains, $contains));
return $this->db->last_query();

回报:

SELECT TOP 100 D1001 as 'part_number', D1021 as 'description', D1063 as 'hs_code' FROM PULAGER WHERE D1001 LIKE 'xy%z' OR D1021 LIKE 'xy%z' ORDER BY D1001

如果我手动用搜索字符串替换问号,它工作正常。但是我不确定不使用查询绑定时的安全问题或其他后果。

关于我应该如何解决这个问题的任何建议?

标签: phpdatabasecodeigniter-3

解决方案


推荐阅读