在Codeigniter / PHP中,我无法在下面的SQL语句中转义$ table的实例。
当我尝试任何类似查询结尾处使用的方法时,由于单引号,它们无效。
在这种情况下,是否有人可以推荐任何方法或改变?
提前感谢您的帮助。
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 = ?";
答案 0 :(得分:2)
您应永远接受表名或列名作为用户输入。
但是如果您没有其他选择 - 唯一的解决方案是白名单
因此,您创建一个包含所有允许的表名的数组,如
$valid_tables = array('t1', 'table2');
然后检查该数组中是否存在$table
:
if (in_array($table, $valid_tables)) {
// everything is fine
} else {
// something is wrong
}