如何从此SQL查询中删除替换先前结果的结果?

时间:2016-09-09 18:06:21

标签: php sql

我正在使用以下HTML表单

<form method="POST">
    <input type="number" placeholder="first" name="first">
    <input type="number" placeholder="last" name="last">
    <input type="submit">
</form>

与此PHP一起

$first = $_POST["first"];
$last = $_POST["last"];

$query = "SELECT * FROM posts ORDER BY TimeStamp DESC LIMIT $first, $last";

当通过表单发布值时,这会成功返回第一个和最后一个之间的条目。但是,当进行新查询时,任何修道院获取的结果都会消失。如何通过表单发布新请求时,如何将新结果添加到旧结果列表的BOTTOM中?

1 个答案:

答案 0 :(得分:1)

让我向您展示一个您必须尝试的基本示例。

我们有一个HTML格式的页面,其中包含一个表单和一个div来存储结果。 在该文档中,我们还有一些Javascript代码来处理表单提交事件。 对于Ajax查询,我使用jQuery做了懒惰的方式。如果您无法在代码中使用该库,请告诉我。

<强> myPage.html下

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <body>
    <div>
      <form id="myForm"><!--Note there's no methods here-->
        <input id="inputFirst" type="number" placeholder="first" name="first">
        <input id="inputLast" type="number" placeholder="last" name="last">
        <input type="submit">
      </form>
    </div>
    <div id="divResults">
      <!--Results will be displayed here-->
    </div>
  </body>
</html>

同一文档( myPage.html )的Javascript代码。

<!--Loading jQuery for easy Ajax methods-->
<!--(You can download it to your server)-->
<script src="http://code.jquery.com/jquery-3.1.0.min.js" type="text/javascript"></script>

<script>
  // These first sentences aren't even necessary in main browsers
  var divResults = window.document.getElementById("divResults");
  var myForm = window.document.getElementById("myForm");
  var inputFirst = window.document.getElementById("inputFirst");
  var inputLast = window.document.getElementById("inputLast");

  // Listening for submit button
  myForm.addEventListener('submit', sendMyAmazingAjax);

  function sendMyAmazingAjax(e) {

    // To avoid the form to be send by direct post method
    e.preventDefault(); 

    $.ajax({
      url: 'myAmazingScript.php', // These are well self explained
      type: 'post',
      data: {
        first: inputFirst.value, // Content of form inputs
        last: inputLast.value
      },
      success: function (data) {
        // data is anything you "echo" in the PHP document
        // We add it to the current contents of divResults (if any)
        divResults.innerHTML += data;
      }
    });
  }
</script>

现在一些PHP在另一个文档中( myAmazingScript.php )。 (你可以在同一份文件中做到这一点,但它有点棘手,根本没有必要)。

我不知道您使用哪种方法对数据库进行查询。我为这个例子选择了准备好的标准,因为它安全,简单且仍然非常扩展。

<?php

// Creating connection
$mysqli = new mysqli('localhost', 'user', 'password', 'myAmazingDatabase');

// Checking connection
if (mysqli_connect_errno()) {
  echo "Connect failed: %s\n", mysqli_connect_error();
  exit();
}

$first = $_POST["first"];
$last = $_POST["last"];

$query = "SELECT * FROM posts ORDER BY TimeStamp DESC LIMIT ?, ?";

if ($stmt = $mysqli->prepare($query)) {
  $stmt->bind_param('ii', $first, $last);
  $stmt->execute();
  $result = $stmt->get_result();

  while ($row = $result->fetch_assoc()) {

    echo 'First field: ' . $row['myAmazingFirstField'] . '<br>';
    echo 'Second field: ' . $row['myAmazingSecondField'] . '<br>';
    // Etc...
  }

  $stmt->free_result();
  $stmt->close();
}

我没有尝试过,但我想我并没有忘记任何重要的事情。如果您有任何问题,请告诉我。

(当然,你必须改变很多名字和#34;)