connect_error); exit(); } $-6ren">
gpt4 book ai didi

php - 没有错误,状态 200,但没有数据进入我的表

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

这是我的set.php

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("rdbms.strato.de", "user", "password", "DBXXXXYYYY");

/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}

$result = $mysqli->prepare("INSERT INTO `defuse_scores` (ip, name, seconds, difficulty, actions) VALUES (?,?,?,?,?)");

$result->bind_param('ssisi', $_SERVER['REMOTE_ADDR'], $_POST['name'], $_POST['seconds'], $_POST['difficulty'], $_POST['actions']);

if (!$result->execute()) {
printf("Error: %s\n", $mysqli->error);
};

$mysqli->close();

在浏览器中调用该页面会返回一个空白页面和响应状态 200 OK(即使所有 $_POST 内容都应该是空的)。

使用 POST 和这个 body 从 Postman 调用页面

{ 
"ip": "127.0.0.119",
"name": "ulli",
"seconds": "23",
"difficulty": "easy",
"actions": "22"
}

给我和空响应以及状态 200 OK

但是我没有在我的 defuse_scores 表中找到任何新记录。这是怎么回事?

我尝试添加多行代码(前三行)以使任何错误可见,但页面仍为空白。

顺便说一句。获取数据:

http://connexo.de/defuse/defuse-api/get.php

这是我尝试使用 POST 存储的地方:

http://connexo.de/defuse/defuse-api/set.php

这是我的表格的样子:

table structure

最佳答案

您的列序列已关闭,您的查询悄无声息失败。为什么?由于您尝试为 IP 地址插入的是 VARCHAR 并且位于用于 name 列的位置。

使用 mysqli_ API 时顺序很重要,与使用命名占位符的 PDO 不同,PDO 不关心顺序。

所以改变你的:

$result = $mysqli->prepare("INSERT INTO `defuse_scores` (ip, name, seconds, difficulty, actions) VALUES (?,?,?,?,?)");

$result->bind_param('ssisi', $_SERVER['REMOTE_ADDR'], $_POST['name'], $_POST['seconds'], $_POST['difficulty'], $_POST['actions']);

到:

$result = $mysqli->prepare("INSERT INTO `defuse_scores` (name, seconds, difficulty, actions, ip) VALUES (?,?,?,?,?)");

$result->bind_param('sisis', $_POST['name'], $_POST['seconds'], $_POST['difficulty'], $_POST['actions'], $_SERVER['REMOTE_ADDR']);

或者为有时需要的 AI 列使用空白值,我以前见过这种情况:

$result = $mysqli->prepare("INSERT INTO `defuse_scores` (id, name, seconds, difficulty, actions, ip) VALUES ('', ?,?,?,?,?)");

$result->bind_param('sisis', $_POST['name'], $_POST['seconds'], $_POST['difficulty'], $_POST['actions'], $_SERVER['REMOTE_ADDR']);

另一个会使您的查询无提示地失败的原因是列长度不够长。

关于php - 没有错误,状态 200,但没有数据进入我的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253642/

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