我目前正在学习参数化查询,因为使用它们是有好处的。
有人可以通过将这段代码转换为参数化版本来提供一些指示吗?
感谢。
if(isset($_GET['news_art_id']) && (!empty($_GET['news_art_id'])))
{
$news_art_id = htmlentities(strip_tags($_GET['news_art_id']));
$news_art_id = validate_intval($news_art_id);
//echo $news_art_id;
$_SESSION['news_art_id'] = $news_art_id;
// Assign value to status.
$onstatus = 1;
settype($onstatus, 'integer');
$query = 'SELECT M.id, M.j_surname, M.j_points_count, M.j_level, A.j_user_id,A.id, A.jart_title, A.jart_tags, A.jart_description, A.jart_createddate FROM jt_articles A, jt_members M WHERE M.id = A.j_user_id AND A.id = ' . check_db_query_id($news_art_id) . " AND A.jart_status = $onstatus;";
$result = mysql_query($query) or die('Something went wrong. ' . mysql_error());
$artrows = mysql_num_rows($result);
}
答案 0 :(得分:3)
一般规则是:每个变量都应该绑定,根本没有内联变量。
答案 1 :(得分:0)
在你的情况下没有优势,记住一个参数化查询需要2次调用db:一个用于设置查询模板和解析,另一个用于填充查询模板参数,通常在循环时使用。因此,在这种情况下,最好调用存储过程(始终是最佳选择)或使用内联sql,并确保在适用时使用http://php.net/manual/en/function.mysql-real-escape-string.php。