通过HTML表单执行查询

时间:2014-12-11 23:53:28

标签: php mysql forms mysqli

视图/和registration.php

<form action="classes/registration.php" method="post">
Username: <input type="text" name="username"><br>
Password: <input type="text" name="password"><br>
<input type="submit">
</form>

类/和registration.php

if(isset($_POST['submit']))
{
 // Define form variables
 $username = $_POST['username'];
 $password= $_POST['password'];

 // Insert form data into database
 $query = "INSERT INTO users (username, password)
 VALUES ('$username', '$password')";
 if(mysqli_query($conn, $query))
 {
    echo "Registration successfull.";
 }
}

问题是,当我点击提交时,我得到一个空白页面。查询未被执行。

我认为问题可能是因为我的值没有正确设置,所以我做了以下事情:

VALUES ('$_POST['password']', '$_POST['password']')";

但这给了我一个错误,大概是因为我正在使用&#39;在&#39;

所以现在我回到原点,不确定为什么我的查询没有被执行

2 个答案:

答案 0 :(得分:3)

您收到一个空白页面,因为如果$ _POST提交未设置,您就不会回复某些内容。

if(isset($_POST['submit']))
由于您的$ _POST [&#39;提交&#39;]从未设置,因此

永远不会成立。您需要为提交提供一个名称,这个(名称)是在$_POST[' /*name of input*/ ']

中发布的内容/您可以访问的内容

将表单更改为以下内容,然后您应该看到

echo "Registration successfull.";

<强> HTML:

<form action="classes/registration.php" method="post">
Username: <input type="text" name="username"><br>
Password: <input type="text" name="password"><br>
<input type="submit" name="submit"> <!-- <<<<<<<<<<< here -->

作为旁注,您绝对应该考虑使用准备好的声明。使用您的插入查询运行注册表单就像是一个热衷于破坏您的服务器的人的邀请。您可能想尝试这样的查询:

$query = $conn->prepare("INSERT INTO users (username, password) VALUES (?,?)");
$query->bind_param('ss',$username,$password);
$query->execute;

这样,您将获得对mysql注入的保护。

答案 1 :(得分:1)

您的文件命名和路径似乎不匹配(根据您提供的文件名)。

无论你是否保留:

views/registration.php
views/classes/registration.php

但如果你遵循:

--/classes
         /registration.php

--/views
        /registration.php

[注意:'--/'是根目录的路径]

然后表单操作classes/registration.php将无法进入任何地方。 所以改变它:

<form action="../classes/registration.php" method="post">

我建议遵循命名惯例:

文件名 - 适用于包含HTML表单的网页,以及

filename_action - 适用于操作页面

另请注意用户baao在另一个答案中提到的可能的错误情况。