Php 不使用单引号转义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-

在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 = ?"; 

您应该绝不接受表名或列名作为用户输入

但如果你没有其他选择,唯一的解决办法就是白名单

因此,您创建了一个包含所有允许使用的表名的数组,如

$valid_tables = array('t1', 'table2');
然后检查该数组中是否存在
$table

if (in_array($table, $valid_tables)) {
    // everything is fine
} else {
    // something is wrong
}

你从哪里得到
$table
变量?@zerkms,$table变量来自控制器,而不是用户输入,不知道这是否会让问题变得有些无关紧要?@jsuissa:如果它来自可信来源(比如控制器,因为你在那里硬编码了它)-那么你就不需要引用它了-在这种情况下,它来自一个可靠的来源,但是作为一个概括性的问题,你的回答是非常有用的。再次感谢。