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

Php 没有错误,状态为200,但没有数据进入我的表,php,mysql,mysqli,Php,Mysql,Mysqli,这是我的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->

这是我的
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

然而,我在我的
defuse\u分数表中没有找到任何新记录。发生了什么事

我尝试添加不同的代码行(前三行)以使任何错误可见,但页面保持空白

顺便说一句,获取数据是可行的:

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

这就是我的桌子的样子:


您的列序列已关闭,您的查询以静默方式失败。为什么?因为您试图为IP地址插入的内容是VARCHAR,并且位于
name
列所使用的位置

当使用
mysqli\ucode>API时,顺序很重要,而使用命名占位符的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']);
致:

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

$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']);

另一个会使查询以静默方式失败的原因是列长度不够长。

您的代码有语法错误,我找不到任何语法错误。你介意详细说明什么是错误的吗?Tbh,指出语法错误而不提及错误是没有帮助的。在定义到db的连接时,你会错过一个双引号。这是我看到的第一个错误“但是我在我的defuse_scores表中没有找到任何新记录。发生了什么事?”-很简单:您从未执行过查询。但你可能会编辑你的帖子;同样,列顺序似乎不相关。现在正在插入数据,但除了id、ip和时间戳之外,它不是来自$\u POST的值,而是处处为空。@connexo确保所有POST数组都包含值。它们的起源不详。我在这里已经尽力了。开始重新调试并使用
var\u dump()
。我能提供的最好的。顺便说一句,订单是相关的。@connexo不,我没有。如果这是直接相关的,那么我在那里帮不了什么忙,对不起,我已经成功了。最后一个问题是Axios默认情况下会序列化数据并发送JSON。如果你想载它一程:@connexo这是个好消息。我在这里学到了一些东西,谢谢分享。
$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']);
$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']);