我一直想创建一个小型应用程序,以经典形式(包括选择,输入和文本区域)填充SQL数据库。我正在使用PHP,并添加了JQuery代码以在页面上同时显示它(以便避免重定向到用于SQL连接和查询的db.php页面)。

我的问题是,尽管它可以正常工作(例如我现在拥有2、3、4甚至10个字段),但它在某个时候停止工作了,我发现自己现在无法确定几个小时了。

首先,下面是代码:

jQuery代码:

$("#dotSave").click( function() {
    $.post( $("form").attr("action"), $("form").serializeArray(), function(info) { $("#result").html(info + " (#" + $dotNo + ")"); } );
    console.log($("form").serializeArray());
});

// Stops db.php from displaying
$("form").submit( function() {
    return false;
});


PHP代码:

<?php

    // Server details (working)

    $conn = mysqli_connect($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $userName = isset($_POST['userName']) ? $_POST['userName'] : '';
    $inputDate = isset($_POST['inputDate']) ? $_POST['inputDate'] : '';
    $sourceType = isset($_POST['sourceType']) ? $_POST['sourceType'] : '';
    $sourceYear = isset($_POST['sourceYear']) ? $_POST['sourceYear'] : '';
    $sourceLink = isset($_POST['sourceLink']) ? $_POST['sourceLink'] : '';
    $sourceName = isset($_POST['sourceName']) ? $_POST['sourceName'] : '';
    $sourceAuthor = isset($_POST['sourceAuthor']) ? $_POST['sourceAuthor'] : '';
    $author = isset($_POST['author']) ? $_POST['author'] : '';
    $content = isset($_POST['content']) ? $_POST['content'] : '';
    $tags = isset($_POST['tags']) ? $_POST['tags'] : '';

    if($conn->query("INSERT INTO dots VALUES('', '$sourceType', '$sourceName', '$sourceLink', $sourceAuthor', '$sourceYear', '$tags', '$author', '$content', '$userName', '$inputDate')"))
        echo "DB: Record saved!";
    else
        echo "DB: Ooops, didn't get through.";

    $conn->close();

?>


因此,我基本上总是得到“ DB:糟糕,没有通过。”在我的#results div中

我记得要解决的最后一个问题是textarea字段中的caracter'正在停止查询工作。然后我意识到我的数据库表和列在latin_swedish_ci中,我将其更改为utf8_unicode_ci。从那以后,我尝试直接在两个排序规则设置中使用空白列创建新的数据库,但没有获得更好的成功,所以可能不是那样。

我已经验证了变量是否已正确传递到序列化数组(很好地记录到控制台中)和php变量中,方法是在运行查询之前通过回显它们。现在想法不多了...有人可以吗?

最佳答案

代替:

echo "DB: Ooops, didn't get through.";


为什么不输出错误内容:

echo mysqli_error($conn);


最好只在开发过程中这样做。

09-25 17:00
查看更多