插入动态where子句的安全方法(例如bindParam,prepare())。这是通过ajax发送给PHP的。所以有些东西来自ajax形式
.php?where=name&what=bob
或者
.php?where=type$what=clothes
然后在PHP中将所有内容设置为变量,例如
if(isset($_POST['where'])){
$where = $_POST['where'];
}
if(isset($_POST['what'])){
$what= $_POST['what'];
}
然后运行一个函数来检索数据
function retrieveData($db, $where, $what){
$getData = $db->prepare("SELECT name, type, stuff FROM tbl WHERE :where = :what");
$getData->bindParam(':what',$what);
$getData->bindParam(':where',$where);
$getData->execute();
..............
}
当我运行这样的查询时,我总是得到关于
的SQL错误'WHERE name = bob"
所以传递了值,但我猜SQL无效?
任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
我认为字符串应该引用
...WHERE name = 'bob'....
所以试试这个
$getData->bindParam(':what',$what,PDO::PARAM_STR, 15);
$getData->bindParam(':where',$where,PDO::PARAM_STR, 15);