我的php没有从ajax请求中将值插入我的sql数据库

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (22)

我在测试php网站的页面上调用一个函数来显示一个html表单来记录要通过ajax提交到我的SQL数据库的数据,但由于某种原因没有插入数据。我在所包含的header.php中有所有必需的bootstrap,js,ajax链接,并且我有其他表单提交到测试站点上的同一数据库中的表,这些表没有问题,因此数据库连接似乎很好,这是为什么我要努力解决为什么没有插入数据。

这是使用MySQL 5,PHP 5的MAMP上的本地主机测试服务器。

我调用html条目表单的代码文件在functions.php中:

<?php

    session_start();

    $link = mysqli_connect("localhost", "user", "pass", "tables");

    if (mysqli_connect_errno()) {

        print_r(mysqli_connect_error());
        exit();
}

// other code ...

function displayTextInput() {

  global $link;

  echo '
  <div class="form">
    <div class="form-group">
    <textarea class="form-control" id="textDesc" placeholder="Description"></textarea>
    <textarea class="form-control" id="textType" placeholder="Type"></textarea>
  </div>
    <button id="postTextButton" class="btn btn-primary">Post Text</button>
  </div>';
}
?>

我的ajax调用是在footer.php中的脚本中:

<script>

$("#postTextButton").click(function() {

            $.ajax({
                type: "POST",
                url: "actions.php?action=postText",
                data: {textDesc: $("#textDesc").val(), textType: $("#textType").val()},
                success: function(result) {

                    if (result == "1") {

                      alert("ajax successful");

                    } else if (result != "") {

                        alert("ajax unsuccessful");

                    }
                }

            })

        })

</script>

最后我的SQL在actions.php中:


if ($_GET['action'] == 'postText') {

          if (!$_POST['TextDesc']) {

            echo "Your text description is empty!";


          } else {

            $textDesc = mysqli_real_escape_string($link, $_POST['textDesc']);
            $textType = mysqli_real_escape_string($link, $_POST['textType']);
            $userIDForTable = mysqli_real_escape_string($link, $_SESSION['id']);


            mysqli_query($link, "INSERT INTO text (`description`, `type`, `userid`) VALUES ('$textDesc', '$textType', '$userIDForTable')");

              echo "1";
            }
          }

我可以回应actions.php else {}部分中的语句,所以代码肯定与那里有关,但我真的似乎无法解决原因。我甚至将上面的代码链接到同一数据库中的一个不同的php表,并让它工作,所以我无法理解为什么这不起作用。我也可以看到控制台中没有错误。任何帮助将不胜感激。

谢谢

提问于
用户回答回答于

单词text是MySQL中的一个特殊单词,我认为你的查询会抛出一个错误。在insert语句后将其添加到代码中:

var_dump(mysqli_error($link));

我知道我应该将此作为评论发布,但我没有足够的意见发表评论。

扫码关注云+社区

领取腾讯云代金券