【问题标题】:No errors but, my records aren't being added to my database没有错误,但是我的记录没有被添加到我的数据库中
【发布时间】:2014-02-13 21:56:42
【问题描述】:

我对 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>

【问题讨论】:

  • 没有错误,因为您不寻找它们。尝试使用 mysqli_error() 看看你会得到什么。
  • if ( empty($POST['pass1']))..... 你不是说if ( ! empty($POST['pass1']))吗?
  • 如果你正确缩进你的代码,那么如果其中一个 if 放错了,例如
  • 您是否尝试过检查代码的哪一部分执行,哪一部分不执行?这可以提供问题所在的线索(不是非常高级的调试,但应该提供线索:))。

标签: php html mysql mysqli


【解决方案1】:

你告诉 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
}

【讨论】:

    【解决方案2】:

    这是错误的:

    $q = "INSERT INTO User_id (user,password)
            VALUES ('$ui','$fn',SHA('$fn'),NOW())";
    

    为 2 列插入 4 个值是行不通的。

    将此添加到脚本的顶部,以便 mysqli 将抛出异常并告诉您确切的问题:

    mysqli_report(MYSQLI_REPORT_ALL);
    

    【讨论】:

      【解决方案3】:
      $q = "INSERT INTO User_id
                    (user,password)
                    VALUES ('$ui','$fn',SHA('$fn'),NOW())";
      

      表格列太少,无法容纳发布的值。检查一下

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 2018-08-20
        • 2021-10-31
        相关资源
        最近更新 更多