【发布时间】:2015-12-23 23:36:16
【问题描述】:
我在当前的分页中使用了一个 get 参数,它工作正常。但是,今天我碰到了 SQL 注入的想法,因此我尝试了 mysqli_real_escape_string 。当我刷新页面时,在使用该 get 参数的查询上使用 fetch_array 似乎有问题。
我得到的错误:
Fatal error: Call to a member function fetch_array() on boolean in C:\xampp\htdocs\index.php on line 106
第 106 行:
while($fetchlistquery = $Listquery->fetch_array()) {
完整代码sn-p:
// Prepare pagination
$getPage = $LibraryUser->mysqli->real_escape_string($_GET["page"]);
if(isset($getPage)) { $page = $getPage; } else { $page = 1; };
$start_from = ($page-1) * 5;
// Get articles
$Listquery = $LibraryArticle->mysqli->query("SELECT * FROM site_articles ORDER BY id DESC LIMIT $start_from, 5");
while($fetchlistquery = $Listquery->fetch_array()) {
更新:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-5, 5' at line 1
仅当您不在实际页面(如 ?page=1 或 ?page=2)中时才会发生这种情况。
知道如何让它工作吗?
【问题讨论】:
-
看看mysqli_error,看看你在
query调用中遇到了什么错误。 -
试试
var_dump($LibraryArticle->mysqli->error) -
@JonStirling 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '-5, 5' 附近使用正确的语法 - 这有点奇怪,因为如果我不逃避 GET,我不会收到任何错误...
-
听起来
$page被设置为 0(或错误)。 -
@JonStirling 更新了我的帖子。只有第 1 页出现该错误,第 2 页和转发工作正常...
标签: php mysqli pagination