Php 不使用单引号转义mysql?
在Codeigniter/PHP中,我无法在下面的SQL语句中转义$table的实例 当我尝试任何一种方法时,比如在查询结束时使用的方法,由于单引号,它们都不起作用 在这种情况下,是否有任何人可以推荐的方法或更改 提前感谢您的帮助 MYSQL语句:Php 不使用单引号转义mysql?,php,mysql,codeigniter,Php,Mysql,Codeigniter,在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-
$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 = ?";
您应该绝不接受表名或列名作为用户输入 但如果你没有其他选择,唯一的解决办法就是白名单 因此,您创建了一个包含所有允许使用的表名的数组,如
$valid_tables = array('t1', 'table2');
然后检查该数组中是否存在$table
:
if (in_array($table, $valid_tables)) {
// everything is fine
} else {
// something is wrong
}
你从哪里得到
$table
变量?@zerkms,$table变量来自控制器,而不是用户输入,不知道这是否会让问题变得有些无关紧要?@jsuissa:如果它来自可信来源(比如控制器,因为你在那里硬编码了它)-那么你就不需要引用它了-在这种情况下,它来自一个可靠的来源,但是作为一个概括性的问题,你的回答是非常有用的。再次感谢。