【问题标题】:Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given警告:mysqli_fetch_assoc() 只需要 1 个参数,给定 2 个
【发布时间】:2018-06-22 05:44:30
【问题描述】:

我遇到了一个小问题...我花了一些时间尝试创建一个 mysqli 登录脚本,但除了遇到问题之外什么也没做...我尝试了多种方法,但每次都会出错.现在我已经到了一个无法再靠自己解决问题的时候了。我得到的错误是 “警告:mysqli_fetch_assoc() 期望参数 1 是 mysqli_result,D 中给出的对象:- FTP- WEB- WEB 5.0\index.php 在第 26 行” - 我的代码是:

<?php  
   $connect = mysqli_connect("localhost", "root", "", "testing");  
   session_start();  
   if(isset($_SESSION["username"]))  
   {  
       header("location:entry.php");  
   }  

   if(isset($_POST["login"]))  
   {  
       if($_POST["username"] == '' || $_POST["pin"] == '')  
       {  
            echo '<script>alert("Alle felter SKAL udfyldes!")</script>';  
       }  
       else  
       {  
           $username = mysqli_real_escape_string($connect, $_POST["username"]);  
           $password = mysqli_real_escape_string($connect, $_POST["password"]);  
           $pin = mysqli_real_escape_string($connect, $_POST["pin"]);  
           $password = sha1($password);  
           $pin = sha1($pin);
           $query = "SELECT * FROM users WHERE username = '$username'";  
           $result = mysqli_query($connect, $query);  
           if(mysqli_num_rows($result) > 0)  
           {
                $row = mysqli_fetch_assoc($connect, $result) ;
                $pass = $row['password'] ;
                $check_pin = $row['pin'] ;

                if ($password === $pass && $pin === $check_pin){
                   $_SESSION['username'] = $username;  
                   header("location:entry.php");
                }    
           }  
           else  
           {  
                echo '<script>alert("Forkert brugernavn, adgangskode eller pin-kode")</script>';  
           }  
      }  
 }  
 ?>
 <!DOCTYPE html>  
 <html>  
      <head>  
	  <script>
	  var loc = window.location.href+'';
if (loc.indexOf('http://')==0){
    window.location.href = loc.replace('http://','https://');
}
	  </script>
           <title>
		  MJVS - Private area.
		   </title>  
		   <link rel="shortcut icon" href="/title_logo.png" />
           <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>  
           <link rel="stylesheet" href="style.css" />  
           <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  

	  </head>  
      <body>  
           <br /><br />  
           <div class="container" style="width:500px;">  
                <h3 align="center"></h3>  
                <br /> 
                <h3 align="center"><b>Login</b></h3>  
                <br />  
                <form method="post">  
                     <label>Enter Username</label>  
                     <input type="text" name="username" class="form-control" />  
                     <br />  
                     <label>Enter Password</label>  
                     <input type="password" name="password" class="form-control" />  
                     <br />  
					 <label>Enter PIN</label>  
                     <input type="password" name="pin" class="form-control" maxlength="4" />  
                     <br />  
                     <input type="submit" name="login" value="Login" class="btn btn-info" />  
                     <br />   
                </form>  
                <?php       
                
?>
           </div>  
      </body>  
 </html>

我希望任何人都可以帮助我解决我的问题...

【问题讨论】:

    标签: php html mysqli error-handling syntax-error


    【解决方案1】:

    看看documentation。该函数采用一个参数。特别是,在您的情况下,$result 参数是

    仅程序样式:mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符

    你给它两个。只传递结果变量。

    分解一下,你有:

    $result = mysqli_query($link, $query)
    

    您在哪里获得结果集($link 代表您的连接),并且

    $row = mysqli_fetch_assoc($result)
    

    获取通用行。文档本身有两个示例。

    【讨论】:

    • 我已经尝试了 1 个参数,但仍然没有成功。新错误:它现在不会让我登录。
    【解决方案2】:

    mysqli_fetch_assoc函数只需要一个参数(结果集由mysqli_query函数返回)。

    替换

    mysqli_fetch_assoc($connect, $result);
    

    mysqli_fetch_assoc($result);
    

    阅读更多关于mysqli_fetch_assoc的信息

    【讨论】:

    • 那行不通。我试过了。它不会让我只使用 1 个参数登录,也不会使用 2 个参数...
    【解决方案3】:

    你能在“mysqli_real_escape_string”中使用一个参数,让我知道是否有效吗?

    【讨论】:

    • 我不能:那行不通。我试过了。它不会让我只用 1 个参数登录,也不会用 2 个参数...
    • 在 html 中,对于每个文本框和密码字段,添加 id 属性并为“name”属性提供相同的值,让我知道是否有效
    • 您是否进行了更改并检查了?
    • 我不太清楚该怎么做,不幸的是.....我不是每天的程序员
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多