gpt4 book ai didi

php - 使用 JSON、XMLHttpRequest 和 PHP 填充数据库的简单示例 file_get_contents ("php://input")不起作用

转载 作者:行者123 更新时间:2023-11-29 18:02:14 25 4
gpt4 key购买 nike

现在我知道以前曾有人问过这个问题,但迄今为止没有一个回复能为我提供见解;

我有一个包含以下脚本的 HTML 页面(最终我将使用此脚本从应用程序中提取数据),基本上测试将一些 JSON 格式的数据发送到 PHP 页面,该页面将使用以下内容填充 MYSQL 数据库记录。

我的问题是我没有得到表记录更新。纳达。

这几个星期以来一直困扰着我;我得到的最接近的是:

Send JSON data from Javascript to PHP?

迄今为止,我取得的有限成功是从 .json 文件中获取数据并在 php 页面上以这种方式更新数据库。因此,脚本中的 JSON 没有问题,并且与数据库的连接也正常。我只是似乎无法将它从 html 页面传递到 php 并填充数据库。我不明白为什么这会那么困难。

任何建议/指示将不胜感激(我需要保持简单,因为我是一个相对新手)。预先感谢您。

HTML 页面脚本

    <script>
var jsonQuizData = {};
var qID = '9';
var learnersName = 'Bart Bundy';
var learnersEmail = 'bbundy@blue.com';
var quizName = 'SomeQuiz99';
var quizScore = '33%';
var result1 = 'Some blob data goes in here?';
var dbString, request;

jsonQuizData = '{ "id":qID, usersName":learnersName, "usersEmail":learnersEmail, "quizTitle":quizName, "qScore":quizScore, "Output1":result1 }';

dbString = JSON.stringify(jsonQuizData);

request = new XMLHttpRequest();
request.open("POST", "process.php", true);
request.setRequestHeader("Content-Type", "application/json");
request.send(dbString);
</script>

process.PHP页面

<?php
header("Content-Type: application/json; charset=UTF-8");

//Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection etc. performed here

$data = json_decode(file_get_contents("php://input"));

$id = $data['id'];
$name = $data['usersName'];
$email = $data['usersEmail'];
$qtitle = $data['quizTitle'];
$result1 = $data['Output1'];
$qScore = $data['score'];

//insert into mysql table
$sql = "INSERT INTO quiz01(quiz_id, quiz_title, fName, eMail, quiz_score, q1_answer)
VALUES('$id', '$qtitle', '$name', '$email', '$qScore', '$result1')";

if(!mysqli_query($conn,$sql))
{
die('Error : ' . mysqli_error($conn));
}
else
{
echo "Data inserted successfully";
}

//Close connection
/?>

....砖墙时间

最佳答案

您的示例中的 stringify 部分不正确,它已经是一个字符串,所以我认为您的意思是:

var jsonQuizData = {};
var qID = '9';
var learnersName = 'Bart Bundy';
var learnersEmail = 'bbundy@blue.com';
var quizName = 'SomeQuiz99';
var quizScore = '33%';
var result1 = 'Some blob data goes in here?';
var dbString, request;
// Here you have to stringify the data object, not a string of the data object.
jsonQuizData = JSON.stringify({"id":qID, "usersName":learnersName, "usersEmail":learnersEmail, "quizTitle":quizName, "qScore":quizScore, "Output1":result1});

request = new XMLHttpRequest();
request.open("POST", "process.php", true);
// Send the regular form header
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(this.responseText);
}
};
// Now when it sends, it should send it properly as a post
request.send('json='+jsonQuizData);

然后在 PHP 中,您不需要发送以下行:

header("Content-Type: application/json; charset=UTF-8");

您可以更改此行:

$data = json_decode(file_get_contents("php://input"));

只是:

$data = json_decode($_POST['json'],true);

现在应该都是常规的$_POST,那么插入的时候需要绑定(bind)参数。

关于php - 使用 JSON、XMLHttpRequest 和 PHP 填充数据库的简单示例 file_get_contents ("php://input")不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com