-3

可能重复:
警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在 problema con el wile 中给出

当我执行 login form 时,我会遇到以下错误:

警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在第 22 行的 C:\xampp\htdocs\login\check.php 中给出

  <?php

  include_once ("function.php");

  $username = $_POST['tfuser'] ;
  $password = $_POST['tfpass'] ;

  if (isset($username) && isset($password)){

    $link = mysql_connect('localhost','root','') or die ('error in connecting to db');
    mysql_select_db('login',$link) or die ('error select db');

    $sql = "select from * from administration 
    where username='$username' and password='$password'";

    $result = mysql_query($sql,$link);

    if (mysql_fetch_assoc($result)){
         //login to panel 
         redirect("panel.php");
    } else {
        //back to login page
    }

  } else {
      //back to login page
      redirect("index.php");
  }

  ?>

现在如何防止此错误显示并防止 Mysql_fetch_assoc 错误?

4

2 回答 2

1

请阅读SQL 注入

您收到以下错误,因为您的 SQL 语句执行失败。

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\login\check.php on line 22

您的 SQL 查询位于:

$result = mysql_query($sql,$link);

返回FALSE。这就是为什么当你使用mysql_fetch_assoc()它时会返回一个警告。

要解决此问题,请确保您$result包含 mysql 资源。一种方法是在 SQL 查询失败的情况下停止脚本执行。你可以这样做:

$result = mysql_query($sql,$link) OR die(mysql_error());

这将向您展示您的 SQL 执行失败的原因。

于 2012-10-27T12:55:34.010 回答
0

您的 mysql 查询为 false,结果显示错误警告:mysql_fetch_assoc() 期望参数 1 是资源,在第 22 行的 C:\xampp\htdocs\login\check.php 中给出的布尔值您得到了这个,因为您使用了错误的方式 $result = mysql_query($sql,$link);//方法不正确 $result = mysql_query($sql);//方法正确

发生此错误是因为查询无法获取任何结果。处理这些类型错误的最佳方法是回显查询并在浏览器屏幕中查看查询的输出。剪切查询部分并将其粘贴到 sql 并运行。确保它会返回错误.. ……

于 2012-10-27T13:21:13.987 回答