0
我最近开始使用php PDO来防止SQL注入,虽然我的语句有问题,但它会根据我通过URL传递的参数更改页面结果。我正在努力的部分是,如何在URL的cat_id添加到我的执行数组时,如何添加$_GET['cat_id']
。这里有一个工作版本,但显然很容易SQL注入,预先感谢任何帮助!具有不同参数计数的PHP PDO语句
PHP
$and = '';
if (isset($_GET['cat_id'])) {
$and = "AND art_cat_id = ".$_GET['cat_id'];
}
$statement_article = $db->prepare("SELECT * FROM app_articles WHERE art_sta_id = :art_sta_id $and ORDER BY art_date DESC");
$statement_article->setFetchMode(PDO::FETCH_ASSOC);
$statement_article->execute(array(':art_sta_id' => "1"));
这里就是我试过,但如果在URL中有cat_id
失败
PHP
$and = '';
if (isset($_GET['cat_id'])) {
$and = "AND art_cat_id = :cat_id";
}
$statement_article = $db->prepare("SELECT * FROM app_articles WHERE art_sta_id = :art_sta_id $and ORDER BY art_date DESC");
$statement_article->setFetchMode(PDO::FETCH_ASSOC);
$statement_article->execute(array(':art_sta_id' => "1",':cat_id' => $_GET['cat_id']));
“这是我所尝试过的,但是如果url中没有cat_id,它就会失败”---所以如果URL中没有这样的话,请不要将它传递给execute()方法 – zerkms 2013-05-10 02:46:08