【问题标题】:It needs to connect to a database, but it doesn't. [duplicate]它需要连接到数据库,但它不需要。 [复制]
【发布时间】:2017-06-12 09:31:49
【问题描述】:
<?php 
session_start();
$host="localhost";
$username="root";
$password="";
$db_name="registrering";
$tbl_name="users";

$conn = mysqli_connect($host, $username, $password, $db_name);

if(!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

 ?>
<html>
<head>
    <title>user registration system using php and PHP and Mysq</title>
    <!---<link rel="stylesheet" type="text/css" href="style.css">-->
</head>
<body>
<div style="float:right; width:70%">
<table width="150px" border="0" cellpadding="3" cellspacing="1">
        <h2>Registrer<h2/>
        <form method="post" action=" ">
        <br>
            <tr>
                <td>Brugernavn</td>
                <td>:</td>
                <td><input type="text" name="Brugernavn"> </td>
            </tr>
            <br>
            <tr>
                <td>Email</td>
                <td>:</td>
                <td><input type="text" name="Email"> </td>
            </tr>
            <br>
            <tr>
                <td>Password</td>
                <td>:</td>
                <td><input type="password" name="Password"></td>
            </tr>
                <input type="submit" name="registrer" value="Registrer">

                <p>
                    Allerede medlem? <a href="login.php">Log ind</a>
                </p>
        </form>
</div>
</table>
</body>
</html>
<?php
if (isset($_POST["registrer"]))
{
$my_username=$_POST["Brugernavn"];
$my_email=$_POST["Email"];
$my_password=$_POST["Password"];

$sql = "INSERT INTO 'users'(`username`, `email`, `password`) VALUES ('$my_username','$my_email','$my_password')";
$resultat = mysqli_query($conn, $sql);
}
?>

它需要连接到数据库,但它不需要。它位于本地主机上,我们无法将数据插入数据库。该数据库由用户名、电子邮件和密码组成。 我们正在使用 varchar(65) 和 utf8_general_ci。

【问题讨论】:

  • 了解prepared Statements以防止SQL注入
  • 执行 SQL 语句后检查错误 (mysqli_error)
  • 是连接失败还是查询失败?您是否从 mysqli_connect_error(连接后)或 mysqli_error(查询后)收到任何错误?正如其他人所说,您的代码容易受到 SQL 注入攻击,您应该改用使用参数来帮助防止这种情况。
  • 我没有收到任何错误。它只是有点刷新。

标签: php html mysql database


【解决方案1】:

假设连接正常 - 插入应该在用户名周围有反引号,而不是普通引号。

$sql = "INSERT INTO `users`(`username`, `email`, `password`) VALUES ('$my_username','$my_email','$my_password')";

我还建议查看准备好的语句和绑定参数,不要忘记不要将密码存储为平面文本。

【讨论】:

    【解决方案2】:

    只是一个提示。每次运行 mysql 查询时,尝试使用 die() 打印出 mysql 错误。希望它能在调试过程中为您节省大量的精力和时间。在插入语句附近也使用反引号users

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2021-11-27
      • 1970-01-01
      • 2020-10-12
      • 2012-04-26
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多