php – 如何在pdo-> query中添加变量值
我想升级我的当前代码,这是经常用PDO注入的SQL.
目前我一直坚持在PDO查询中使用变量. 如果我有这样的两个论点 $rowsPerPage = 3; // by default we show first page $pageNum = 1; if (isset($_GET['page'])) { $pageNum = mysql_real_escape_string($_GET['page']); } $offset = ($pageNum - 1) * $rowsPerPage; 我有这样的查询 $STH = $DBH->query("SELECT News.ID,LEFT(NewsText,650),Title,AID,Date,imgID," . "DATE_FORMAT(Date,'%d.%m.%Y.') as formated_date " . "FROM News,Categories,NewsCheck WHERE Name LIKE '%News - Block%' AND CID=Categories.ID AND JID=News.ID ". "ORDER BY `Date` DESC LIMIT $offset,$rowsPerPage"); PDO在查询ORDER BY的最后一行报告错误 那么如何在PDO :: query中添加变量值呢? 更新: $STH = $DBH->prepare("SELECT News.ID," . "DATE_FORMAT(Date,'%d.%m.%Y.') as formated_date " . "FROM News,NewsCheck WHERE Name LIKE '%News - Block%' AND CID=Categories.ID AND JID=News.ID ". "ORDER BY `Date` DESC LIMIT :offset,:rowsPerPage;"); $STH->bindParam(':offset',$offset,PDO::PARAM_STR); $STH->bindParam(':rowsPerPage',$rowsPerPage,PDO::PARAM_STR); $STH->execute(); 但是发生了错误:
第二次更新 $STH->bindParam(':offset',PDO::PARAM_INT); $STH->bindParam(':rowsPerPage',PDO::PARAM_INT); 一切正常.
您希望使用预准备语句和查询参数,如下所示:
$sth = $dbh->prepare('SELECT your_column FROM your_table WHERE column < :parameter'); $sth->bindParam(':parameter',$your_variable,PDO::PARAM_STR); $sth->execute(); 即使您使用的是PDO,直接在查询中使用变量也无法保护您免受SQL注入的侵害.参数是防止它们的唯一好方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |