php - 没有错误,但是我的记录没有被添加到我的数据库中

标签 php html mysql mysqli

我是 PHP 和 MySQL 的新手,我已经研究了三天,这个问题让我很困惑。我没有收到任何错误,也没有查询添加到我的数据库中。在页面 register.php 排队后,它应该加载 login.php 并显示 Registered 文本,但它是空白的并且没有记录添加到数据库中。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>

<?php

$page_title = 'Register';
if( $_SERVER['REQUEST_METHOD'] == 'POST')
{
    include_once "connect.php";

    $errors = array();
    if( empty( $_POST['user_id']))
    {
        $errors[] = 'Enter your user ID.';
    }
    else
    {
        $ui = mysqli_real_escape_string($db_name, trim($_POST['user_id']));
    }
    if ( empty($POST['pass1']))
    {
        if($_POST['pass1'] != $_POST['pass2'])
        { 
            $errors[] = 'Passwords do not match.';
        }
        else
        {
            $fn = mysqli_real_escape_string($db_name, trim($_POST['pass1']));
        }
    }
    else
    {    
        $errors[] = 'Enter your Password.';
    }
    if (empty($errors))
    {
        $q = "INSERT INTO User_id
              (user,password)
              VALUES ('$ui','$fn',SHA('$fn'),NOW())";
        $r = mysqli_query ($db_name,$q);

        if ($r)
        {
            echo '<h1>Registered!</h1>

               <p> You are now registered.</p>
               <p><a href="login.php">Login</a></p>';
        }
        mysqli_close( $db_name);
        exit();                                
    }
    else 
    {
        echo '<h1>Error!</hl>
          <p id="err_msg">The following error(s) occurred:<br>';
        foreach ($errors as $msg)
        {
            echo "-$msg<br>";
        }
        echo 'Please try again.</p>';
        mysqli_close( $db_name);
    }
}
?>  

<h1>Register</h1>
<form action = "register.php" method="POST">
  <p>
   User ID: <input type="text" name= "user_id"
   value="<?php if (isset( $_POST[ 'user_id']))
      echo $_POST[ 'user_id'];?>">
   Password: <input type="password" name="pass1"
   value="<?php if (isset($_POST['pass1']))
      echo $_POST ['pass1'];?>">  
      Confirm Password: <input type="password" name="pass2"
      value="<?php if(isset($_POST['pass2']))
      echo $_POST['pass2'];?>">
  </p> <p>
  <input type="submit" value= "Register"> </p>
</form>      

</body>
</html>

最佳答案

您告诉 MySQL 您想要将数据插入两列,然后给它四个要插入的值。那会导致错误。但是你看不到它,因为你没有检查 mysqli_error()在您查询之后。

$q = "INSERT INTO User_id (user,password) VALUES ('$ui','$fn',SHA('$fn'),NOW())";
                             ^^^ 2 columns            ^^^ 4 values

这是一个非常基本的错误处理示例:

$r = mysqli_query ($db_name,$q);
if ($r === false) {
    echo mysqli_error($db_name);
    exit; // This needs to be a lot better
}

关于php - 没有错误,但是我的记录没有被添加到我的数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21766388/

相关文章:

来自 S3 的 PHP CSV 作为字符串 - 想要转换为数组

javascript - 在两个 div 之间隐藏或显示

mysql - MySQL 中 INSERT INTO 和 LOAD DATA from CSV 的区别

PHP While 循环 - 从表中逐行打印数据

mysql - 两张表的sql sum count(*)

php - 我如何构建我的类以便更轻松地进行单元测试?

php - 将字符串转换为日期时间 php 未按预期返回

javascript - 在 setTimeout 调用期间超过最大调用堆栈大小

php - 我的 MySql 查询有什么问题?

javascript - 在 Javascript 中以编程方式复制和选择跨度(使用 clipboard.js)