PHP不在SQL数据库插入语句中发布

时间:2018-02-06 18:38:09

标签: php mysql database mysqli

所以我尝试使用POST方法从HTMl中的表单收集数据,并使用MySQLi函数将所述数据插入MySQL数据库。在独立的PHP(没有数据库连接)时,我能够成功地将数据POST并回显到第二个文档。

但是,一旦我打开与数据库的连接并尝试使用insert语句,数据就会停止一起POST。我已经使用字符串测试了insert语句,它运行得很好。

这是我的表格:

<form action="welcome" method="post">
    First Name*<br>
    <input type="text" name="userFN" required><br><br>
    Last Name*<br>
    <input type="text" name="userLN" required><br><br>
    Email*<br>
    <input type="email" name="userEmailAddress" required><br><br>
    Password*<br>
    <input type="password" name="userPassword" required><br><br>
    Tell Us About Yourself<br>
    <textarea rows="4" cols="50" name="userDescription">
    </textarea>
    <br>
    <input type="submit">
</form>

这是我的PHP(欢迎,正如上面的操作中所使用的那样)。

$conn = new mysqli($servername, $username, $password, $dbname);

    // Check connection

    if ($conn->connect_error) {

        die("Connection failed: " . $conn->connect_error);

    } 

    //post form info into variables
    $userFN = mysqli_real_escape_string($conn, $_POST['userFN']);
    $userLN = mysqli_real_escape_string($conn, $_POST['userLN']);
    $userEmailAddress = mysqli_real_escape_string($conn, $_POST['userEmailAddress']);
    $userPassword = mysqli_real_escape_string($conn, $_POST['userPassword']);
    $userDescription = mysqli_real_escape_string($conn, $_POST['userDescription']);

    $sql = "INSERT INTO users (userFN, userLN, userEmailAddress, userPassword, userDescription) VALUES" . " ('" . $userFN .  "','" . $userLN . "','" . $userEmailAddress . "','" . $userPassword . "','" . $userDescription . "');";

    echo $sql;

    if ($conn->query($sql) === TRUE) {

        echo "New record created successfully";

    } else {

        echo "Error: " . $sql . "<br>" . $conn->error;

    }

始终返回New record created successfully,并在数据库中插入新记录,但所有字段均为空白。当我回应插入语句时,我得到了这个:

INSERT INTO users (userFN, userLN, userEmailAddress, userPassword, userDescription) VALUES ('','','','','');

所以它显然不再获取我的POST数据了。我尝试过使用准备好的陈述但仍然没有运气。我在这做错了什么?我非常感谢任何建议,谢谢你。

1 个答案:

答案 0 :(得分:0)

答案可能让你感到惊讶。

所以问题实际上是“行动”的形式。由于我的虚拟主机提供程序的配置方式,我实际上需要在操作中的文件夹名称后指定/index.php/。它实际上混淆了服务器,并且由于某种原因被翻译为'GET'而不是'POST'。希望这会有所帮助。

感谢您的支持!