我正在开发一个系统,以非常简单的方式管理数据库中的一些表。
系统首先使用 Ajax 加载用户可以查看和管理的数据库。然后加载该数据库中的表,然后加载该表的数据。
我有这样的东西:
$.ajax({
url : "myUrl.php",
data : {
db : $dbSelector.val(),
table : tableToLoad
},
success : function (json) { /* Some cool stuff here */ }
});
而且我发现当参数是数据库名称、表或列时不能使用参数化查询,所以我不能这样做:
<?php
$query = "SELECT * FROM :db.:table";
$st = $pdo->prepare($query);
$st->execute(
array(
"db"=>$db,
"table" => $table
)
);
$rows = $st->fetchAll(PDO::FETCH_OBJ);
我无法使用 mysql_ 或 mysqli_ 过滤,因为我们没有安装它。
最佳答案
您可以使用:
$db = substr($dbh->quote($db), 1, -1);
或者只是删除所有非字母数字字符:
$db = preg_replace('/\W/', '', $db);
关于mysql - 使用动态加载的表和数据库名称避免查询中的 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16445791/