【问题标题】:Executing query through HTML form通过 HTML 表单执行查询
【发布时间】:2015-02-10 15:10:51
【问题描述】:

views/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>

classes/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']')";

但这给了我一个错误,大概是因为我使用的是 ' inside of '

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

【问题讨论】:

  • 添加 else 以打印其他内容。 else { echo 'did not work'; } 之类的。

标签: php mysql forms mysqli


【解决方案1】:

如果没有设置 $_POST 提交,您将得到一个空白页面。

if(isset($_POST['submit']))

永远不会为真,因为您的 $_POST['submit'] 从未设置过。你需要给你的提交一个名字,这个(名字)是发布的内容/你可以在$_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 注入。

【讨论】:

    【解决方案2】:

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

    不管你是否保留:

    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 在另一个答案中提到的可能的错误情况。

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 2012-04-28
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多