Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将PHP插入MYSQL数据库_Php_Mysql_Database_Insert Into - Fatal编程技术网

无法将PHP插入MYSQL数据库

无法将PHP插入MYSQL数据库,php,mysql,database,insert-into,Php,Mysql,Database,Insert Into,我可以从数据库中读取数据,但当我将数据插入数据库时,它会显示“已成功注册!”,然后我检查我的数据库,它并没有插入任何数据 Register.php <!DOCTYPE HTML> <html> <head> <title>Register page</title> <br> <font size="5" color="black"><b>&nbsp;Register Page&

我可以从数据库中读取数据,但当我将数据插入数据库时,它会显示“已成功注册!”,然后我检查我的数据库,它并没有插入任何数据

Register.php

    <!DOCTYPE HTML>
    <html>
<head>
<title>Register page</title>
<br>
<font size="5" color="black"><b>&nbsp;Register Page<br><br></b></font>
</head>

<body background=" images/background.jpg">
<form action="index.php">
    <input type="submit" value="Home">
</form>
<br>
<form action="Register.php" method="POST">
 <fieldset>
  <legend>Enter your information</legend>
  <table>
      <tr>
          <td>Username:</td>
          <td><input type="text" name="username" required="required"/><br></td>
      </tr>
      <tr>
          <td>Password:</td>
          <td><input type="text" name="password" required="required"/><br></td>
      </tr>
      <tr>
          <td>Email:</td>
          <td><input type="text" name="email" required="required"/><br></td>
      </tr>
      <tr>
          <td>First Name:</td>
          <td><input type="text" name="firstname" required="required"/><br></td>
      </tr>
      <tr>
          <td>Last Name:</td>
          <td><input type="text" name="lastname" required="required"/><br></td>
      </tr>
      <tr>
          <td>Date of Birth:</td>
          <td><input type="date" name="dateofbirth" required="required" ><br></td>
      </tr>
      <tr>
          <td><input type="submit" value="Register"/></td>
    </tr>

  </table>
 </fieldset>
</form>


</body>
</html>
<?php
if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $username   = mysql_real_escape_string($_POST['username']);
        $password   = mysql_real_escape_string($_POST['password']);
        $firstname  = $_POST['firstname'];
        $lastname   = $_POST['lastname'];
        $email      = mysql_real_escape_string($_POST['email']);
        $dateofbirth= $_POST['dateofbirth'];
        echo "user is :".$username;
        $bool = true;
        mysql_connect("localhost", "root", "") or die(mysql_error());
        mysql_select_db("userdata") or die(mysql_error("Cannot Connect to Database"));
        $query = mysql_query("SELECT * FROM users");
        while($row = mysql_fetch_array($query))
                {
                    $table_users = $row['username'];
                    if($username == $table_users)
                        {
                            $bool = false;
                            Print '<script>alert("username is used!");</script>';
                            Print '<script>window.location.assign("Register.php");</script>';

                        }
                }
        if($bool)
         {
        mysql_query("INSERT INTO users ('username','password','email','firstname','lastname','dateofbirth') VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')");
        Print '<script>alert("Successfully Registered!");</script>';
        Print '<script>window.location.assign("Register.php");</script>';
         }


}
 ?>

注册页

注册页面


输入您的信息 用户名:
密码:
电邮:
名字:
姓氏:
出生日期:

更新你的底码

if($bool)
    {
        mysql_query("INSERT INTO users ('username','password','email','firstname','lastname','dateofbirth') VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')");
        Print '<script>alert("Successfully Registered!");</script>';
        Print '<script>window.location.assign("Register.php");</script>';
    }
if($bool)
{
mysql_查询(“插入用户('username'、'password'、'email'、'firstname'、'lastname'、'dateofbirth')值('$username'、'$password'、'$email'、'$firstname'、'$dateofbirth');
打印“警报(“已成功注册!”);
打印“window.location.assign”(“Register.php”);
}

在mysql查询中,用户名前面缺少一个开头。不确定是否是问题,但会导致问题。

更正SQL:

mysql_query("INSERT INTO users (username','password','email','firstname','lastname','dateofbirth') VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')");

说明:

在MySQL中,字段名不是用单引号括起来的。相当地 它们可以用倒勾(`)括起来,以避免与 保留关键字


注意:不要使用
mysql.*
函数。它们已被弃用,您可以改为
mysqli*
PDO

这与插入问题本身无关,而是与检查数据库中是否存在用户名的例程有关:

...
$bool = true;
$query = mysql_query("SELECT * FROM users");
while($row = mysql_fetch_array($query))
{
    $table_users = $row['username'];
    if($username == $table_users)
    {
        $bool = false;
        Print '<script>alert("username is used!");</script>';
   }
}
if($bool)
{
...
然后只检查查询是否返回任何行


希望这能有所帮助。

我测试了您的代码,发现连接不正确,第二次您在字段名称中使用的引号语法不正确,因此查询无法执行。我的意见是使用mysqli_connect而不是mysql_connect,因为它已经过时了。我已经更新了您的代码,希望它能帮助您:

    <?php 
//your values from post I just assign test for all
$username   = 'test';//mysql_real_escape_string($_POST['username']);
$password   = 'test';//mysql_real_escape_string($_POST['password']);
$firstname  = 'test';//mysql_real_escape_string($_POST['firstname']);
$lastname   = 'test';//mysql_real_escape_string($_POST['lastname']);
$email      = 'test';//mysql_real_escape_string($_POST['email']);
$dateofbirth= 'test';//mysql_real_escape_string($_POST['dateofbirth']);
$bool = true;

//database connection
$servername = "localhost";
$username1 = "root";
$password1 = "";
$db  = 'test_001';

// Create connection
$conn = new mysqli($servername, $username1, $password1, $db);

$result = $conn->query("SELECT * FROM users");

while($row = $result->fetch_assoc())
{
    $table_users = $row['username'];
    if($username == $table_users)
    {
        $bool = false;
        Print '<script>alert("username is used!");</script>';
        //Print '<script>window.location.assign("Register.php");</script>';

    }
}

if($bool)
{
    //mysql_query("INSERT INTO users ('username','password','email','firstname','lastname','dateofbirth') VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')");

    $query = "INSERT INTO users (username,password,email,firstname,lastname,dateofbirth) VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')";
    $x = $conn->query($query);
    if ($x)
        Print '<script>alert("Successfully Registered!");</script>';
    Print '<script>window.location.assign("Register.php");</script>';
}

您需要删除字段名周围的引号,因此您的任务应该是

插入用户(用户名、密码、电子邮件、名字、姓氏、出生日期) 值(“$username”、“$password”、“$email”、“$firstname”、“$lastname”、“$dateofbirth”)

我还建议使用DB包装器自动转义变量


PDO解决此问题
MYSQL产生了许多问题,但当我使用PDO时,它解决了插入查询中的问题

'username'
之前缺少一个引号(实际上不需要封装列名,无论如何都应该使用反勾号)。您没有检查插入是否成功。您正在使用已弃用的mysql_uu函数而不是mysqli_u为什么您仍在使用mysql_uConnect,它已经弃用,请使用PDO而不是此。我不知道如何使用PDO,我希望您能帮助我它是否更好您应该测试查看
mysql_u查询
实际返回的内容,而不仅仅是假设它成功。这不是插入失败的原因,但这将有助于排除故障,并为您提供一个捕获错误并报告问题的机会,而不仅仅是默默地丢弃数据。PDO解决我的问题谢谢everyone@WaleedWalaaAldeanAbuZaid编辑您的问题并编写您正在运行的代码now@WaleedWalaaAldeanAbuZaid现在应该可以了。我们再次尝试引用表名,比如
users
我这样做了,仍然有问题..当我有用户名为“admin”的行时,当我插入用户名admin时,它说“username is used”,这意味着问题不在查询中。我检查了我可以从数据库读取行,但我无法插入,它说“successfully register”,但当我检查数据库时,没有更改hanks,但当我使用此代码时,它没有打印“成功注册”和相同的问题。首先检查mysql是连接状态,使用connection_status()是否连接,如果connection_status()返回1,则表示其连接正确,然后回显您的查询,并尝试在sql或此处的注释中运行它(在回显复制并粘贴为注释后),而此代码段可能会解决问题,真正有助于提高您的帖子质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
$sql = "INSERT INTO users (name,username,password,status,picture) VALUES ('$name','$uname','$pass',0,'$picture')";
    <?php 
//your values from post I just assign test for all
$username   = 'test';//mysql_real_escape_string($_POST['username']);
$password   = 'test';//mysql_real_escape_string($_POST['password']);
$firstname  = 'test';//mysql_real_escape_string($_POST['firstname']);
$lastname   = 'test';//mysql_real_escape_string($_POST['lastname']);
$email      = 'test';//mysql_real_escape_string($_POST['email']);
$dateofbirth= 'test';//mysql_real_escape_string($_POST['dateofbirth']);
$bool = true;

//database connection
$servername = "localhost";
$username1 = "root";
$password1 = "";
$db  = 'test_001';

// Create connection
$conn = new mysqli($servername, $username1, $password1, $db);

$result = $conn->query("SELECT * FROM users");

while($row = $result->fetch_assoc())
{
    $table_users = $row['username'];
    if($username == $table_users)
    {
        $bool = false;
        Print '<script>alert("username is used!");</script>';
        //Print '<script>window.location.assign("Register.php");</script>';

    }
}

if($bool)
{
    //mysql_query("INSERT INTO users ('username','password','email','firstname','lastname','dateofbirth') VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')");

    $query = "INSERT INTO users (username,password,email,firstname,lastname,dateofbirth) VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')";
    $x = $conn->query($query);
    if ($x)
        Print '<script>alert("Successfully Registered!");</script>';
    Print '<script>window.location.assign("Register.php");</script>';
}
$sql = "INSERT INTO users (name,username,password,status,picture) VALUES ('$name','$uname','$pass',0,'$picture')";