Codeigniter (или PHP) удаляет части строки запроса - PullRequest
1 голос
/ 15 апреля 2020

У меня есть сайт на базе Codigniter-3.0.4. Запросы к базе данных ODB C работали отлично в течение многих лет. Или так я думал. Вчера я обнаружил, что он просто удаляет все части строки привязки запроса, которая находится между %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

Если я вручную заменю метки вопросов на строку поиска, это будет работать нормально , Но я не уверен в проблемах безопасности или других последствиях, когда не используется привязка запроса.

Есть предложения, как мне решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...