Php mySQL将变量作为单元格名称传递不会产生单元格内容
要在给定表的不同单元格中进行查询,我希望使用一个函数,在该函数中我将单元格的名称传递给查询,如下所示:Php mySQL将变量作为单元格名称传递不会产生单元格内容,php,mysql,pdo,Php,Mysql,Pdo,要在给定表的不同单元格中进行查询,我希望使用一个函数,在该函数中我将单元格的名称传递给查询,如下所示: $cell = 'frames'; $query = $this->db->prepare('SELECT :cell FROM time_table WHERE time = :time '); $query->bindValue(':cell', trim($cell), PDO::PARAM_STR); $query->bindValue(':time', tr
$cell = 'frames';
$query = $this->db->prepare('SELECT :cell FROM time_table WHERE time = :time ');
$query->bindValue(':cell', trim($cell), PDO::PARAM_STR);
$query->bindValue(':time', trim($time), PDO::PARAM_STR);
$success = $query->execute();
$query_result = $query->fetchAll();
print_r($query_result);
但是我没有得到框架的内容,而是得到了单元的名称,即框架
我需要做什么才能获得内容?简单的回答:这是不可能的。 占位符只能在准备好的语句中插入值。要解决此问题,请使用:
你不能对表或列名使用绑定变量,所以我必须为我要查询的每一列准备它自己的语句?你可以插值,只要它是白名单的,即你知道该列存在,并且它不是基于用户输入或是经过验证的用户输入。那么SQL注入呢?@Ben,这就是你应该使用它的原因,而不是直接注入值。Quote将处理任何允许sql注入的字符,如果使用得当-请查看“现在正确”中的安全警告;-链接手册!
$cell = 'frames';
$query = $this->db->prepare('SELECT '.$this->db->quote(trim($cell)).' FROM time_table WHERE time = :time ');
$query->bindValue(':time', trim($time), PDO::PARAM_STR);
$success = $query->execute();
$query_result = $query->fetchAll();
print_r($query_result);