【问题标题】:click button to display the next record in database (Limit)单击按钮以显示数据库中的下一条记录(限制)
【发布时间】:2018-05-07 17:15:16
【问题描述】:

我的代码出了什么问题..我尝试单击下一步按钮以显示数据库中的下一条记录..但是当我单击时没有任何反应

这是我获取记录的函数

  public function getBooks()
{
    $limit = 1;
    //SELECT loginUser.username, Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username="loay";
    $query = "SELECT Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $limit";
    $statment = $this->db->prepare($query);
    $statment->execute([
        ':username' => $this->username
    ]);
    $result = $statment->fetchAll();

    echo "<table border='1'>
    <tr>
    <th>Books</th>
    </tr>";
    foreach($result as $row){
        echo "<tr>";
        echo "<td>" . $row['nameOfBook'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";

}

这是我在 index.php 中的代码

  if($object->getBooks()){
  if( isset($_POST['next'])){

    $limit +=1;  
}

}

【问题讨论】:

  • 控制台有错误吗?
  • 你在 index.php 中得到 $limit 吗?
  • 是的一条记录.. 但是当我点击下一个按钮时,记录被删除,就像我重新加载页面时一样。

标签: php pdo pagination limit


【解决方案1】:

你只有要获取的记录数,你没有给出开始参数。

您的查询应该是$query = "SELECT Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $start, $limit"

请注意$start, $limitLIMIT之后

那么你的代码应该是

 if( isset($_POST['next'])){

     $start +=1;  
 }

**编辑: 我只是想你是按用户名获取记录,我进一步假设每个用户名都是唯一的。在这种情况下,分页将不起作用。因为每个用户名只有一行。尝试像$query = "SELECT Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id LIMIT $start, $limit" 这样的查询 没有 where 子句。

只有在获取由提供的loginUser.username 添加的记录时,您才必须使用您的WHERE loginUser.username=:username

【讨论】:

  • 感谢您的回复.. 但还是不行。
  • 我应该在这样的选择语句之前声明 $limit = 1 :` $limit = 1; $query = "SELECT Library.nameOfBook FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username LIMIT $start, $limit";`
  • 是的,您的变量应该在查询中使用它们之前进行初始化。最初是 $start = 0;$limit = 1;
  • 还有其他帮助吗!?
  • 如果你还没有解决这个问题,问题可能是你准备好的声明,请附上你的execute参数。可能绑定变量的数量与提供的令牌数量不匹配stackoverflow.com/questions/9331291/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多