没有单引号转义mysql?

时间:2012-02-26 23:09:44

标签: 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->escape($user_id)." AND $table.$field = ?"; 

1 个答案:

答案 0 :(得分:2)

您应永远接受表名或列名作为用户输入。

但是如果您没有其他选择 - 唯一的解决方案是白名单

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

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

然后检查该数组中是否存在$table

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