我正在尝试使用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();
?>
错误
答案 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
;