<legend id='JkFAD'><style id='JkFAD'><dir id='JkFAD'><q id='JkFAD'></q></dir></style></legend>
      <bdo id='JkFAD'></bdo><ul id='JkFAD'></ul>

    <small id='JkFAD'></small><noframes id='JkFAD'>

    <tfoot id='JkFAD'></tfoot>
    <i id='JkFAD'><tr id='JkFAD'><dt id='JkFAD'><q id='JkFAD'><span id='JkFAD'><b id='JkFAD'><form id='JkFAD'><ins id='JkFAD'></ins><ul id='JkFAD'></ul><sub id='JkFAD'></sub></form><legend id='JkFAD'></legend><bdo id='JkFAD'><pre id='JkFAD'><center id='JkFAD'></center></pre></bdo></b><th id='JkFAD'></th></span></q></dt></tr></i><div id='JkFAD'><tfoot id='JkFAD'></tfoot><dl id='JkFAD'><fieldset id='JkFAD'></fieldset></dl></div>

      1. mysqli_stmt_close() 期望参数 1 是 mysqli_stmt,布尔值

        时间:2023-07-29

        <legend id='y3wY2'><style id='y3wY2'><dir id='y3wY2'><q id='y3wY2'></q></dir></style></legend>

              <tbody id='y3wY2'></tbody>
              <tfoot id='y3wY2'></tfoot>
                • <bdo id='y3wY2'></bdo><ul id='y3wY2'></ul>

                  <i id='y3wY2'><tr id='y3wY2'><dt id='y3wY2'><q id='y3wY2'><span id='y3wY2'><b id='y3wY2'><form id='y3wY2'><ins id='y3wY2'></ins><ul id='y3wY2'></ul><sub id='y3wY2'></sub></form><legend id='y3wY2'></legend><bdo id='y3wY2'><pre id='y3wY2'><center id='y3wY2'></center></pre></bdo></b><th id='y3wY2'></th></span></q></dt></tr></i><div id='y3wY2'><tfoot id='y3wY2'></tfoot><dl id='y3wY2'><fieldset id='y3wY2'></fieldset></dl></div>
                • <small id='y3wY2'></small><noframes id='y3wY2'>

                • 本文介绍了mysqli_stmt_close() 期望参数 1 是 mysqli_stmt,布尔值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  这在大约 5 分钟前还在工作,但突然停止了.这是一个简单的登录表单,请看下面的代码

                  <!DOCTYPE html><html lang="zh-cn"><头><meta charset="UTF-8"><title>登录</title><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"><style type="text/css">正文{字体:14px sans-serif;}.wrapper{ 宽度:350px;填充:20px;}</风格><身体><div class="wrapper"><h2>登录</h2><p>请填写您的登录凭据.</p><form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"方法=发布"><div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>"><label>用户名</label><input type="text" name="username" class="form-control" value="<?php echo $username; ?>"><span class="help-block"><?php echo $username_err;?></span>

                  <div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>"><label>密码</label><input type="password" name="password" class="form-control"><span class="help-block"><?php echo $password_err;?></span>

                  <div class="form-group"><input type="submit" class="btn btn-primary" value="登录">

                  <p>还没有帐户?<a href="register.php">立即注册</a>.</p></表单>

                  我得到的错误是 Warning: mysqli_stmt_close() 期望参数 1 是 mysqli_stmt,布尔值在第 83 行的/opt/lampp/htdocs/magic/client/login.php 中给出

                  这在大约 5 分钟前还在工作,但突然停止了,不知道为什么.有什么想法吗?

                  当它工作时,它只是将用户重定向到welcome.php,现在它不是,并给我那个错误.代码取自 https://www.tutorialrepublic.com/php-tutorial/php-mysql-login-system.php

                  解决方案

                  看看你在问什么:

                  if($stmt = mysqli_prepare($link, $sql)){//[...]}mysqli_stmt_close($stmt);

                  您总是尝试关闭您的语句,即使它没有成功创建.您需要移动该关闭尝试:

                  if($stmt = mysqli_prepare($link, $sql)){//[...]mysqli_stmt_close($stmt);}

                  此外,您首先收到此错误的事实意味着您的 SQL 查询未能准备好,因此其中存在某种错误.您目前没有检查这一点,如果您想找出为什么您的代码不起作用,这可能会让您感到困难.我建议为此添加一个检查:

                  if($stmt = mysqli_prepare($link, $sql)){//[...]mysqli_stmt_close($stmt);} 别的 {回声查询有问题:".mysqli_error($link);}

                  请注意,在生产代码中,您不想直接输出 mysqli_error() ,因为它可能会显示有关您的数据库的信息,而这些信息不是任何人的业务而是您的业务,因此请仅在此期间执行此操作你正在调试.

                  this was working about 5 minutes ago and has suddently stopped. It is a simple login form, please see code below

                  <?php
                  // Initialize the session
                  session_start();
                  
                  // Check if the user is already logged in, if yes then redirect him to welcome page
                  if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
                      header("location: welcome.php");
                      exit;
                  }
                  
                  // Include config file
                  require_once "db/config.php";
                  
                  // Define variables and initialize with empty values
                  $username = $password = "";
                  $username_err = $password_err = "";
                  
                  // Processing form data when form is submitted
                  if($_SERVER["REQUEST_METHOD"] == "POST"){
                  
                      // Check if username is empty
                      if(empty(trim($_POST["username"]))){
                          $username_err = "Please enter username.";
                      } else{
                          $username = trim($_POST["username"]);
                      }
                  
                      // Check if password is empty
                      if(empty(trim($_POST["password"]))){
                          $password_err = "Please enter your password.";
                      } else{
                          $password = trim($_POST["password"]);
                      }
                  
                      // Validate credentials
                      if(empty($username_err) && empty($password_err)){
                          // Prepare a select statement
                          $sql = "SELECT id, username, password FROM users WHERE username = ?";
                  
                          if($stmt = mysqli_prepare($link, $sql)){
                              // Bind variables to the prepared statement as parameters
                              mysqli_stmt_bind_param($stmt, "s", $param_username);
                  
                              // Set parameters
                              $param_username = $username;
                  
                              // Attempt to execute the prepared statement
                              if(mysqli_stmt_execute($stmt)){
                                  // Store result
                                  mysqli_stmt_store_result($stmt);
                  
                                  // Check if username exists, if yes then verify password
                                  if(mysqli_stmt_num_rows($stmt) == 1){                    
                                      // Bind result variables
                                      mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
                                      if(mysqli_stmt_fetch($stmt)){
                                          if(password_verify($password, $hashed_password)){
                                              // Password is correct, so start a new session
                                              session_start();
                  
                                              // Store data in session variables
                                              $_SESSION["loggedin"] = true;
                                              $_SESSION["id"] = $id;
                                              $_SESSION["username"] = $username;                            
                  
                                              // Redirect user to welcome page
                                              header("location: welcome.php");
                                          } else{
                                              // Display an error message if password is not valid
                                              $password_err = "The password you entered was not valid.";
                                          }
                                      }
                                  } else{
                                      // Display an error message if username doesn't exist
                                      $username_err = "No account found with that username.";
                                  }
                              } else{
                                  echo "Oops! Something went wrong. Please try again later.";
                              }
                          }
                  
                          // Close statement
                          mysqli_stmt_close($stmt);
                      }
                  
                      // Close connection
                      mysqli_close($link);
                  }
                  ?>
                  
                  <!DOCTYPE html>
                  <html lang="en">
                  <head>
                      <meta charset="UTF-8">
                      <title>Login</title>
                      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
                      <style type="text/css">
                          body{ font: 14px sans-serif; }
                          .wrapper{ width: 350px; padding: 20px; }
                      </style>
                  </head>
                  <body>
                      <div class="wrapper">
                          <h2>Login</h2>
                          <p>Please fill in your credentials to login.</p>
                          <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
                              <div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
                                  <label>Username</label>
                                  <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
                                  <span class="help-block"><?php echo $username_err; ?></span>
                              </div>    
                              <div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
                                  <label>Password</label>
                                  <input type="password" name="password" class="form-control">
                                  <span class="help-block"><?php echo $password_err; ?></span>
                              </div>
                              <div class="form-group">
                                  <input type="submit" class="btn btn-primary" value="Login">
                              </div>
                              <p>Don't have an account? <a href="register.php">Sign up now</a>.</p>
                          </form>
                      </div>    
                  </body>
                  </html>
                  

                  The error I get is Warning: mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, boolean given in /opt/lampp/htdocs/magic/client/login.php on line 83

                  This was working about 5 minutes ago and has suddenly stopped and not sure why. Any ideas?

                  When it worked, it simply redirected the user to welcome.php and now it is not, and gives me that error. The code was taken of https://www.tutorialrepublic.com/php-tutorial/php-mysql-login-system.php

                  解决方案

                  Look at what you're asking:

                  if($stmt = mysqli_prepare($link, $sql)){
                      // [...]
                  }
                  
                  mysqli_stmt_close($stmt);
                  

                  You always try to close your statement, even if it wasn't successfully created. You need to move that close attempt:

                  if($stmt = mysqli_prepare($link, $sql)){
                      // [...]
                  
                      mysqli_stmt_close($stmt);
                  }
                  

                  Additionally, the fact that you got this error in the first place means your SQL query failed to be prepared, so there's some kind of error in there. You are currently not checking for that, which can make life difficult for you if you want to figure out why your code isn't working. I recommend adding a check for that:

                  if($stmt = mysqli_prepare($link, $sql)){
                      // [...]
                  
                      mysqli_stmt_close($stmt);
                  } else {
                      echo "Something's wrong with the query: " . mysqli_error($link);
                  }
                  

                  Note that in production code, you don't want to output the mysqli_error() directly since it may reveal information about your database that isn't anybody's business but yours, so only do this while you're debugging.

                  这篇关于mysqli_stmt_close() 期望参数 1 是 mysqli_stmt,布尔值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:CodeIgniter Active Record:一次加载一行 下一篇:通过 SSH 通过 PHP 连接到 mysql 数据库

                  相关文章

                  最新文章

                    <legend id='m3MzP'><style id='m3MzP'><dir id='m3MzP'><q id='m3MzP'></q></dir></style></legend>
                    1. <tfoot id='m3MzP'></tfoot>

                    2. <small id='m3MzP'></small><noframes id='m3MzP'>

                      <i id='m3MzP'><tr id='m3MzP'><dt id='m3MzP'><q id='m3MzP'><span id='m3MzP'><b id='m3MzP'><form id='m3MzP'><ins id='m3MzP'></ins><ul id='m3MzP'></ul><sub id='m3MzP'></sub></form><legend id='m3MzP'></legend><bdo id='m3MzP'><pre id='m3MzP'><center id='m3MzP'></center></pre></bdo></b><th id='m3MzP'></th></span></q></dt></tr></i><div id='m3MzP'><tfoot id='m3MzP'></tfoot><dl id='m3MzP'><fieldset id='m3MzP'></fieldset></dl></div>
                        <bdo id='m3MzP'></bdo><ul id='m3MzP'></ul>