这是我的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和this 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
这就是我桌子的样子:
php - 没有错误,状态为200,但表中没有数据-LMLPHP

最佳答案

列序列已关闭,查询无声失败。为什么?因为您试图为IP地址插入的内容是VARCHAR,它位于name列使用的位置。
当使用mysqli_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']);

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

或者对有时需要的a I'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']);

另一件会使查询无声地失败的事情是列长度不够长。

07-28 07:49