【问题标题】:trying to send form values to database试图将表单值发送到数据库
【发布时间】:2019-01-06 03:08:59
【问题描述】:

我在将我的表单值发送到 mysql 数据库时遇到问题我阅读了所有其他主题并且我做了他们写的但我没有得到我想要的请帮助我:(

        <?php
      $dbhost = "localhost";
      $dbuser = "root";
      $dbpass = "13838383";
      $dbname = "users";
      $connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    ?>
    <?php
    include("../includes/functions.php");
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <link rel="stylesheet" href="../public/stylesheets/style.css" type="text/css">
        <title>Our WebPage</title>
      </head>
      <body>
        <center>
        <form action="input.php" method="post">
          <fieldset>
            <legend>Register</legend>
            <span>UserName: </span><br />
            <input type="text" name="username" placeholder="USERNAME"><br /><br />
            <span>PassWord: </span><br />
            <input type="text" name="lastname" placeholder="PASSWORD"><br /><br />
            <input type="button" name="submit" value="submit"><br /><br />
            <fieldset>
        </form>
        </center>
        <?php
        ?>
        <?php
          if (isset($_POST['submit'])) {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $addUserQuery = "INSERT INTO users (username, password) VALUES ({$username}, {$password});";
            $added = mysqli_query($connection, $addUserQuery);
            if ($added) {
              echo '<br>Input data is successful';
            } else {
              echo '<br>Input data is not valid';
            }
          }
        ?>
      </body>
    </html>

我的问题是我不知道我应该在表单标签的动作属性中输入什么谢谢请帮助

【问题讨论】:

标签: php mysql database forms mysqli


【解决方案1】:

简单地说,你的变量没有被引用,所以你的查询变成了这个(如果有人提交1337user作为用户名,P@ssw0rd作为密码):

INSERT INTO users (username, password) VALUES (1337user, P@ssw0rd);

什么时候应该:

INSERT INTO users (username, password) VALUES ('1337user', 'P@ssw0rd');

改为绑定你的变量: How can I prevent SQL injection in PHP?

if (isset($_POST['submit'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $addUserQuery = mysqli_prepare($connection, "INSERT INTO users (username, password) VALUES (?, ?)");
    mysqli_stmt_bind_param($addUserQuery, "ss", $username, $password);
    $added = mysqli_stmt_execute($addUserQuery);
    if ($added) {
      echo '<br>Input data is successful';
    } else {
      echo '<br>Input data is not valid';
    }
}

【讨论】:

  • 插入用户(用户名,密码)值({$username},{$password});当在引号 (") 中时,用户名和密码实际上会从 $username 和 $password 获取实际值,但我同意应该使用绑定参数。
  • @bestprogrammerintheworld 我想我需要澄清一下。我知道它会获取实际值(在我的示例中,我使用了 user 和 pass,而不是 $username 和 $password 来表示它们已被替换。)我已经更新了我的答案以使用更好的示例,这可以更好地显示问题。
  • 你说得对,我做到了,谢谢你,但你没有告诉我应该将提交 tinput 类型设置为提交按钮 :) 谢谢 :)
  • @MehdiAghighi - 你并不完全清楚实际问题是什么(我想这就是你被否决的原因)。很高兴知道你现在想通了! :-)
  • @bestprogrammerintheworld 是的!我不知道我的问题是什么我只知道表单值不会进入 mysql 数据库!这就是我问这个问题的原因:(
猜你喜欢
  • 2011-07-02
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 2019-08-02
  • 1970-01-01
相关资源
最近更新 更多