一般来说,如何防止PHP中的Mysql_fetch_assoc错误?

时间:2012-10-27 12:48:09

标签: php mysql syntax

  

可能重复:
  Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in problema con el wile

当我执行登录表单时,我会遇到以下错误:

  

警告: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错误?

2 个答案:

答案 0 :(得分:1)

请阅读SQL Injections

您收到以下错误,因为执行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执行失败的原因。

答案 1 :(得分:0)

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

发生此错误是因为查询无法获取任何结果。最好的方法来处理这些类型的错误是echo查询并在浏览器屏幕中查看查询的输出。剪切查询部分并将其粘贴到sql和run.sure它将返回错误......