Спасаясь mysql без одинарных кавычек? - PullRequest
0 голосов
/ 27 февраля 2012

В Codeigniter / PHP у меня возникают проблемы с экранированием экземпляров таблицы $ в приведенной ниже инструкции SQL.

Когда я пытаюсь использовать любой из методов, подобных тем, которые использовались в конце запроса, они не работают из-за одинарных кавычек.

Есть ли какие-либо методы или изменения, которые можно порекомендовать в этой ситуации?

Заранее спасибо за любую помощь.

Оператор MYSQL:

$sql = "SELECT * FROM $table INNER JOIN resumes ON resumes.resume_id = $table.resume_id AND resumes.user_id = ".$this->db->escape($user_id)." AND $table.$field = ?"; 

1 Ответ

2 голосов
/ 27 февраля 2012

Вы должны никогда принимать имя таблицы или имя столбца в качестве пользовательского ввода.

Но если у вас нет других альтернатив - единственное решение - белые списки

Таким образом, вы создаете массив со всеми разрешенными именами таблиц, которые будут использоваться, как

$valid_tables = array('t1', 'table2');

и затем проверьте, существует ли $table в этом массиве:

if (in_array($table, $valid_tables)) {
    // everything is fine
} else {
    // something is wrong
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...