【问题标题】:POST keyword filter to PHP SQL - POST input not workingPOST关键字过滤器到PHP SQL - POST输入不起作用
【发布时间】:2023-03-23 20:00:01
【问题描述】:

我正在尝试从前端的输入中发布关键字搜索并在 SQL 查询中使用它,但它似乎无法识别我的帖子值。

注意:未定义索引:关键字 in C:\wamp64\www\SQLPractice\filter-table.php 第 19 行

整个 PHP

  $host = "localhost";
  $user = "root";
  $pass = "";

  $databaseName = "practice_db";
  $tableName = "t_cars";

  $conn = mysqli_connect($host,$user,$pass,$databaseName);
  $dbs = mysqli_select_db($conn, $databaseName);
  $filter = mysqli_real_escape_string($conn, $_POST['keyword']);

  $sql = 'SELECT *
          FROM   "$tableName"
          WHERE (c_id LIKE "$filter" OR
                 c_brand LIKE "$filter" OR
                 c_model LIKE "$filter" OR
                 c_year LIKE "$filter" OR
                 c_color LIKE "$filter")';


  $result = mysqli_query($conn, $sql); 
  if (!$result) {
    die('Invalid query: ' . mysql_error());
  }         //query
  $array = mysqli_fetch_all($result);                          //fetch result    

  echo json_encode($sql);

前端摘录

...<div id="filter">
        <h1>Filter</h1>
        <form name="form" action="http://localhost/SQLPractice/filter-table.php" method="post">
            <input type="" name="keyword" id="filter">
        </form>
        <br>
        <button>Query DB</button>
    </div>
</body>
<script type="text/javascript">
    var filter = document.getElementById('filter'),
        button = document.getElementsByTagName('button')[0];

    button.addEventListener("click", function(){filterDatabase();});

    function filterDatabase(){
        console.log("filterDatabase()");
        console.log($("input").val());
        $.ajax({                                      
          url: 'http://localhost/SQLPractice/filter-table.php',                  //the script to call to get data          
          data: $("input").val(),                        //you can insert url argumnets here to pass to api.php
          method: "POST",                           //for example "id=5&parent=6"     
          success: function(data)          //on recieve of reply
          {

            //Breaking CSV into array;

            var json = data;
            $("#filteredContent").html(data);

【问题讨论】:

  • 在我看来,您尝试做的是使用 GET 而不是 POST。

标签: php ajax mysqli


【解决方案1】:

输入框id为id="filter"下方

<input type="" name="keyword" id="filter">

所以你可以获取输入类型的值并将其发送为

 data: {keyword:$("#filter").val()}, 

【讨论】:

  • 嗨,Saty,感谢您的评论。更改后,我收到“无效查询:”
猜你喜欢
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多