【问题标题】:Running a SQL query via AJAX - where is the mistake?通过 AJAX 运行 SQL 查询 - 错误在哪里?
【发布时间】:2013-04-26 09:26:08
【问题描述】:

我有这个脚本,它必须将输入的数据发送到处理 php 页面

<button id="whatever" onclick="sendData()">Send</button>

        <script>

            function sendData() {
        var header = $('.header_input').val();
        var content = $('.content_input').val();

        $.ajax({
            type: 'POST',
            url: 'parts/post_functions.php',
            data: {
                header: header,
                content: content
                  }
               });
            }

        </script>

而处理页面是这样的:

<?php

$con=mysqli_connect("localhost", "root", "shit", "data");
        // Check connection
        if (mysqli_connect_errno()) {
          echo "Failed to connect to MySQL: " . mysqli_connect_error();
          }

      $header = mysql_real_escape_string(htmlentities($_POST['header']));
      $content = mysql_real_escape_string(nl2br(htmlentities($_POST['content'])));

      $sql = mysqli_query($con,"INSERT INTO posts (Header, Content) VALUES 
        ('{$header}','{$content}')");
          mysqli_close($con);
?>

那么我如何正确接收数据,当然还要将其发送到查询?

我对 AJAX 完全陌生,但我相信对于那些已经使用它一段时间的人来说,这是一个非常简单的问题。

【问题讨论】:

  • 我认为您的 HTML 中已经有 JQuery 引用?
  • mysql_real_escape_string 需要返回资源的 mysql_connect。你有 mysqli_connect 返回对象,那么你需要用 mysqli_* 转义你的字符串
  • 确保数据已发布到处理表单
  • 似乎您的代码是正确的,除了@RoyalBg 提到的任何内容。那么问题出在哪里?

标签: php sql ajax


【解决方案1】:
$header = $mysqli->real_escape_string(htmlentities($_POST['header']));
$content = $mysqli->real_escape_string(nl2br(htmlentities($_POST['content'])));

【讨论】:

    【解决方案2】:

    你可以这样做

        <script>
    
        function sendData() {
        var header = $('.header_input').val();
        var content = $('.content_input').val();
        var dataString = 'header='+header'&content='+content;
        $.ajax({
            type: 'POST',
            url: 'parts/post_functions.php',
            data: dataString,
            success: function(data) {
              alert(data);
            } 
               });
            }
    
        </script>
    

    现在在 PHP 页面中,您可以通过以下方式访问值

    <?php
      $header = $_POST['header'];
      $content = $_POST['content'];
      // ANYTHING THAT YOU `echo` here will be alerted in jquery alert
    ?>
    

    希望你有所了解

    【讨论】:

      【解决方案3】:

      使用这个。

      <button id="whatever" onclick="sendData()">Send</button>
      <script>
          function sendData(){
              var header = jQuery('.header_input').val();
              var content = jQuery('.content_input').val();
              jQuery.ajax({
                  type: 'POST',
                  url: 'parts/post_functions.php',
                  data: {
                      header: header,
                      content: content
                  },
                  success: function( data ) {
                      alert(data);
                  }
              });
          }
      </script>
      

      <?php
      
      $con = mysqli_connect("localhost", "root", "shit", "data");
          // Check connection
          if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
          }
      
        $header = mysqli_real_escape_string($con,htmlentities($_POST['header']));
        $content = mysqli_real_escape_string($con,nl2br(htmlentities($_POST['content'])));
      
        $sql = mysqli_query($con,"INSERT INTO posts (Header, Content) VALUES 
          ('$header','$content')");
      
        if($sql)
        {
            echo 'done';
        }
        else
        {
            echo 'error';
        }
      
      mysqli_close($con);
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-17
        • 1970-01-01
        • 2017-03-23
        • 1970-01-01
        • 1970-01-01
        • 2021-11-25
        • 2015-08-22
        • 1970-01-01
        相关资源
        最近更新 更多