【问题标题】:Why does my web service not receive any data from my HTML form?为什么我的 Web 服务没有从我的 HTML 表单中接收到任何数据?
【发布时间】:2021-09-07 21:10:21
【问题描述】:

我有一个 HTML 表单(应该)将用户输入数据发送到 Web PHP 服务:

<!DOCTYPE HTML>
<html>
<head>
  <title>Register Form</title>
</head>
<body>
 <form action="localhost/test.php" method="POST">
  <table>
   <tr>
    <td>Thema :</td>
    <td><input type="text" name="theme" required></td>
   </tr>
   <tr>
    <td>Jahr :</td>
    <td><input type="number" name="year" required></td>
   </tr>
   <tr>
    <td><input type="submit" value="Speichern"></td>
   </tr>
  </table>
 </form>
</body>
</html>

Web 服务会将数据输入 MySQL 数据库。这工作正常。我知道,因为如果我在浏览器中打开 Web 服务,它会在我的数据库中填充一行 NULL。但是,如果我单击 HTML 站点上的提交按钮,它既不会填充用户输入,也不会填充 NULL。这是我的网络服务:

<?php

    if(isset($_POST['theme']) && isset($_POST['year'])) {
        
        $theme = $_POST['theme'];
        $year = $_POST['year'];}
        $url = "127.0.0.1";
        $database = "songs";
        $username = "root";
        $password = "";
        
        $connect = mysqli_connect($url, $username, $password, $database);   
            
                    if(!$connect) 
                    {
                        die("Connection failed: ".$connect->connect_error);
                    }
            
                    //create a template
                    $sql = "INSERT INTO theme (theme, year) VALUES (?, ?);";
          
            
                    //create a prepared statement
                    $stmt = mysqli_stmt_init($connect);
            
            
                    //prepare the prepared statement
                    if (!mysqli_stmt_prepare($stmt, $sql)) {
                        echo "SQL statement failed";
                    } else {
                        //bind parameters to the placeholders
                        mysqli_stmt_bind_param($stmt, "si", $theme, $year);      //1 string, 1 integer, is equal to theme and year
                        //run parameters inside database
                        mysqli_stmt_execute($stmt);

                        mysqli_close($connect);
                    }
?>

我知道我的 HTML 网站正在运行,因为在 webhook.site 它向我显示了输入。 (请忽略丢失的错误处理以及我的网络服务上的所有内容,我知道。)

我做错了什么?

【问题讨论】:

  • 您是否尝试过var_dump($_POST) 来验证您的脚本是否确实收到了数据?
  • 您不能在网络服务中发布数据。你已经使用 CURL 函数来满足你的要求。 php.net/manual/en/ref.curl.php
  • “我做错了什么?” - 首先,你没有给出准确的问题描述。您从脚本中得到什么响应/输出 - 没有?还是您的自定义错误消息之一?
  • 假设这首先进入最外层的 IF,那么我希望您很可能会得到 SQL statement failed ... 因为您的查询包含用作列名的未加引号的保留字。
  • @CBroe Bro 冷静下来

标签: php html database web-services post


【解决方案1】:

在表单标签中,如果html和文件在同一个文件夹中,action的值应该是test.php。否则放相对路径。不是 localhost/test.php。

【讨论】:

  • 非常感谢,现在可以使用了!这么简单的错误可能会让人头疼..
猜你喜欢
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2017-06-03
  • 2013-08-10
  • 2020-12-09
  • 1970-01-01
  • 2021-02-20
  • 2021-11-19
相关资源
最近更新 更多