MYSQLI发送随机长整数而不是通过Ajax形式传递的数据

时间:2018-07-26 03:07:32

标签: javascript php jquery ajax mysqli

编辑:我通过删除准备好的语句来使其工作。使用准备好的语句的所有文件同时中断。是否有可能造成此惨败的某种服务器设置更改?当前的PHP设置https://imgur.com/a/TpTwb7D

这让我难过了几个小时。我正在尝试通过jquery将用户提交的表单提交到数据库中,并且它的工作原理是,所提交的已发布整数字段是8个字符长的随机整数而不是所提交的值。表单中的字符串根本不传递任何内容。当我在mysqli上方手动定义变量时,它可以正常工作。表单/字段名称也在HTML中正确命名。奇怪的是,我记得这段代码大约在5个月前就可以使用了,但是我不知道发生了什么变化。任何帮助是极大的赞赏!

我注意到另一个使用相同方法的jquery表单也坏了,我知道这是可行的。它具有与提交随机整数相同的问题。最后,还有另一种功能相同的表单,但是没有准备好的语句来正确提交数据。

PHP:

$urlId = $_POST['urlId'];
$giverId =  $_SESSION["mem_id"];
$receiverId = $_POST['receiverId'];
$feedback = $_POST['feedback'];

$conn = new mysqli($host, $user, $passwrd, $db);

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

if (!($stmt = $conn->prepare("INSERT INTO cc_feedback (url_id, giverId, receiverId, feedback, date) VALUES (?, ?, ?, ?, NOW())"))) {
    echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
}

if (!$stmt->bind_param("iiis", $urlId, $giverId, $receiverId, $feedback)) {
    echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

$conn->close();

JS:

(document).ready(function() {   
    $('#feedback-form').submit(function(e){     
        e.preventDefault();     
        $.post('include/insertdata.php', $(this).serialize() )
        .done(function(data){
            // do stuffs
        })
        .fail(function(){
            //alert('Ya done');
        });     
    }); 
});

数据库条目:

如果表单包含以下字段:

  • urlId:123

  • receiverId:123

  • 反馈:测试

  • giverId是会话处理的(用户ID为555。此字段有效)

然后数据将显示在数据库中,如下所示:

  • urlId:39361776

  • receiverId:39361904

  • 反馈:NULL

  • giverId:555

我通过在insertdata.php页面上将urlId设置为单独的会话变量来检查数据是否正在传递到文件。它显示为正确的urlId(在这种情况下为123)

0 个答案:

没有答案