PHP 未使用 fetch 正确接收 $_POST 变量

PHP doesn't properly receive a $_POST variable using fetch

使用 React-Native 和 fetch(),我想使用 PHP 脚本创建一个新的数据库条目。 PHP 脚本本身正在运行,已使用 html 页面对其进行了成功测试。 但是我的 Javascript fetch() 版本还不能正常工作。

// App.js    

    const dbData = new FormData();
    dbData.append(
      'fileName', 'fileNameTest',
    );

    fetch('http://myurl.com/createDatabaseEntry.php', {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
      method: 'POST',
      body: dbData,
    }).then((res) => {
      console.log('Database response: ', res);
    })
    .catch((error) => {
      console.log('DB error: ', error);
    });

顺便说一句:日志中的网络状态始终为 200。

PHP方:

// createDatabaseEntry.php

$fileName = $_POST['fileName'];
$link = mysqli_connect('localhost', 'login', 'password', 
'myDatabase');
$sql = "INSERT INTO files (fileName) VALUES ('$fileName')";

可能是关于使用 fetch 或 dbData.append()?

传递变量

如我所见,您已连接到数据库但未执行 INSERT 语句。 请不要忘记 1) 参数转义 2) 错误处理

$filename = mysqli_real_escape_string($link, $fileName);
$sql = "INSERT INTO files (fileName) VALUES ('$filename')";
if (true === mysqli_query($link, $sql)) {
    echo 'Insert done';
} else {
    echo 'Error: ' . mysqli_error($link);
}

代码中至少有两个问题

  1. echophp

  2. 没有回复
  3. 您只记录 Response 对象,您可能希望在其中使用 Response.json()Response.text()Response.arrayBuffer()Response.blob()JSON、纯文本、ArrayBufferBlob

  4. 的形式读取来自 php 的响应

fetch('http://myurl.com/createDatabaseEntry.php', {
  method: 'POST',
  body: dbData,
})
.then(res => res.text()).then(text => console.log(text))
.catch(error => console.error('DB error: ', error));