Json数据未在PHP中保存到DB

时间:2016-03-05 20:52:28

标签: php json ajax

我正在尝试使用ajax发送名称年龄的功能。同样由 PHP 收集,然后存储到 DB 。我想我正确地做了但数据没有保存在数据库中。有人可以帮我吗?

HTML

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $('button').click(function(){
        $.ajax({
            url: 'addData.php',
            type: 'POST',
            dataType: "json",
            data: {
                name: $('#name').val(),
                age: $('#age').val(),
            }
        })
    });
});
</script>
</head>
<body> 
<input id="name" type="text" />
<input id="age" type="text" />
<button>Click</button>
</body> 
</html> 

PHP

<?php

//Parameters for connection
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test1";

//Reading json
$data_back = json_decode(file_get_contents('php://input'));

// set json string to php variables
$name = $data_back->{"name"};
$age = $data_back->{"age"};

// Create Connection
$conn = new mysqli($servername, $username, $password, $dbname);

//Creating Query
$sql = "INSERT INTO table1 (name, age) VALUES ($name, $age)";

//Running Query
$conn->query($sql);

//Closing Connection
$conn->close();

?>

错误

enter image description here

3 个答案:

答案 0 :(得分:1)

即使您使用jquery作为json发送数据,php仍然将其作为$ _POST对象接收。所以,这应该有效:

$name = $_POST['name'];
$age = $_POST['age'];

答案 1 :(得分:1)

我认为你的对象$ data_back是空的,因为函数json_decode解析数据时出错。你应该尝试使用var_dump($ data_back);出口;在json_decode之后或更高级的方法,如调试。

答案 2 :(得分:0)

我相信这是在json_decode

之后访问数据的正确方法
$name = $data_back->name;

我还建议查看用于数据库查询执行的预准备语句......好的,我强烈建议你研究它。

编辑:也许也尝试这样:将file_get_contents()替换为$_POST;