【问题标题】:Trouble connecting data to MySQL无法将数据连接到 MySQL
【发布时间】:2014-06-27 16:25:46
【问题描述】:

当我单击提交按钮时,我似乎无法找出为什么我的 PHP 代码不允许我将信息存储在 MySQL 中。有人可以告诉我下面的代码有什么问题吗?

我想让用户提交他们的注册表单并且他们的信息可以转移到 MySQL 数据库中。然后,我希望将用户带到我的 index.html 文件。

感谢任何帮助。 谢谢

<?php 

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$mysql_database = "21st";
$conn = mysqli_connect($dbhost, $dbuser, $dbpass) or die("Could not connect database");
        mysqli_select_db($conn, $mysql_database) or die("Could not select database");

$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$password2 = $_POST['password2'];

if ($password == $password2)    {
        $sql = "INSERT INTO members (username, email, password) VALUES ('$userrname','$email','$password')";
} else  {
    echo "Your passwords must match";
}
?>

【问题讨论】:

  • 您实际上并没有执行您的查询。但如果你这样做了,无论如何你都会对 sql 注入持开放态度,所以最好不要这样做。
  • ...另外,这个'$userrname' 应该改变。检查您的拼写,不要以纯文本形式存储密码。您对大量 SQL 注入持开放态度。 请勿使用此代码,除非仅用于内部目的或纯粹的学习。
  • 那么,您的问题是连接到 MySQL(如您的标题中所暗示的)吗?或者只是没有像上面评论中提到的那样执行查询?
  • 在开发过程中,将错误报告添加到文件顶部error_reporting(E_ALL); ini_set('display_errors', 1); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
  • 是的,我知道其中有很多是不正确的,这就是我在这里的原因。还在学习。问题是查询永远不会执行。我可以很好地连接到 SQL。

标签: php mysql


【解决方案1】:

尝试使用mysqli_query 实际运行查询。当您设置$sql 时,所做的只是为查询设置了一个名为$sql 的变量。另请注意,您在查询中设置了变量$userrname,它应该是$username,正如上面直接的$_POST 设置的那样。我调整后的代码版本如下:

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$mysql_database = "21st";

$conn = mysqli_connect($dbhost, $dbuser, $dbpass) or die("Could not connect database");
mysqli_select_db($conn, $mysql_database) or die("Could not select database");

$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$password2 = $_POST['password2'];

if ($password === $password2) {

  // Set the query.
  $sql = "INSERT INTO members (username, email, password)"
       . " VALUES (?, ?, ?)"
       ;

  // Bind the values to the query.
  mysqli_stmt_bind_param($sql, 'sss', $username, $email, $password);

  // Run the query.
  mysqli_query($conn, $sql);

  // Free the result set.
  mysqli_free_result($sql);

  // Close the connection.
  mysqli_close($conn);

}
else {
  echo "Your passwords must match";
}

【讨论】:

  • 这可能会解决 OP 的问题,但不应该使用它,原因有很多。
  • @Fred-ii- 是的,这里有问题。但是重构整体逻辑……需要一艘更大的船!
  • 是的,但是当我不指出主要问题时,我总是被否决。如果你确实得到了一个,请放心,它不会来自我,只是说。 ;-)
  • @Fred-ii- 向下或向上,我最终领先。处理这些东西的最佳方法。
猜你喜欢
  • 2015-01-25
  • 1970-01-01
  • 2016-12-03
  • 2014-01-25
  • 1970-01-01
  • 2012-03-17
  • 2017-07-29
  • 1970-01-01
相关资源
最近更新 更多