请先完整阅读
在这个答案中:如何使用动态表名防止SQL注入?
Pekka指出为什么这段代码:
$clas=$_POST['clas'];
$query="SELECT * FROM $clas ";
Run Code Online (Sandbox Code Playgroud)
无法使用PDO或修复mysql-real_escape_string().
任何人都可以提供示例代码如何解决这个问题,以便新手可以粘贴该代码
(根据他的需要调整/调整它)并保护SQL注入安全.
请不要解释SQL注入,我知道关于注入和PDO的所有内容,我只需要示例代码
您可以使用白名单来确保该值确实是您希望以这种方式访问的表之一.
例:
$allowed_tables = array('table1', 'table2');
$clas = $_POST['clas'];
if (in_array($clas, $allowed_tables)) {
$query = "SELECT * FROM `$clas`";
}
Run Code Online (Sandbox Code Playgroud)
请注意,直接从GET或POST参数构造SQL查询通常是一个坏主意,但白名单可以使其安全.