Codeigniter auto удаляет косые черты в запросах БД? - PullRequest
2 голосов
/ 19 июня 2011

У меня есть запрос SQL INSERT, в котором есть поле с косой чертой. Вот строка в PHP:

'\\\\192.168.2.10\\datastore'

Вот когда я повторяю это:

'\\192.168.2.10\datastore'

Приведенная выше строка является частью запроса и используется в этом методе:

$this->db->query($sql);

Однако, когда я просматриваю базу данных, она была записана как:

\192.168.2.10datastore

Как я могу остановить это? Что я могу отключить, чтобы остановить Codeigniter от этого?

Обновление

var $clients_array = array(
    1 => array('datastore' => '\\\\192.168.2.10\\datastore'),
);

function(){

//loop here

$client_details = $this->clients_array[1];
$datastore = $client_details['datastore']; 

$sql = "INSERT INTO table (datastore) VALUES ('$datastore')";

//$sql = "INSERT INTO table (datastore) VALUES ('".$datastore."')"; //tried this too

echo $sql;

if($this->db->query($sql)){}

}

1 Ответ

3 голосов
/ 19 июня 2011

Возможно, я что-то пропускаю, но эти обратные слэши, как вы знаете, являются escape-символами как в PHP, так и в MySQL.Вам нужно избегать их для вашего запроса, или они сами убегут.

$datastore = $this->db->escape($client_details['datastore']);
$sql = "INSERT INTO table (datastore) VALUES ('$datastore')";

Я почти уверен, что mysql_real_escape_string() также будет в порядке, но мы используем CI, поэтому могли бы сделать большую частьоб этом.

Рассмотрите возможность использования Active Record CI, которая автоматически скрывает все запросы, или привязок запросов (ссылка на связанной странице), в противном случае вы должны делать это вручную, как обычно.

Подробнее об экранировании запросовс CI: http://codeigniter.com/user_guide/database/queries.html

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