如何解决我的编译器警告

时间:2012-10-10 21:42:44

标签: php sql syntax

整个代码:

<?php 

if (isset($_POST['usname']) && isset($_POST['pasw'])){

    $username = mysql_ramznegar($_POST['usname'],$link);
    $password = mysql_ramznegar($_POST['pasw'],$link);

$query = "SELECT * FROM `admin` WHERE `usname` = $username";
    $admin_result = mysql_query($query,$link);
    $admin_result = mysql_fetch_array($query,MYSQL_ASSOC);

    if($admin_result['usname']==$username && $admin_result['passw']==$password){


            if($admin_result[usname] == "admin"){

            $_SESSION['auth'] = 1;

                redirect("panel");

                   exit;                                

    }
     else{

        echo 'ur username or password is invalid';
        redirect("index.php");
     }


}

}

?>

我有一个带有两个列的表(admin)的数据库,第一个是usname,第二个是passw,当我输入用户名和密码时我选择了查询编译器显示这个对我来说错误,如何解决此编译器警告:

  

警告:mysql_fetch_array()期望参数1是资源,   第60行的C:\ xampp \ htdocs \ ramznegar1 \ index.php中给出的字符串

     

你应该改变

     

$ admin_result = mysql_fetch_array($ query,MYSQL_ASSOC)

     

     

$ admin_result = mysql_fetch_array($ admin_result,MYSQL_ASSOC)

我编辑了我的代码,但我又遇到了这个错误:

  

警告:mysql_fetch_array()期望参数1是资源,   第60行的C:\ xampp \ htdocs \ ramznegar1 \ index.php中给出的布尔值

新代码是:http://pastebin.com/ycNT0XqM

2 个答案:

答案 0 :(得分:2)

你应该改变:

$query = "SELECT * FROM `admin` WHERE `usname` = $username";
$admin_result = mysql_query($query,$link);
$admin_result = mysql_fetch_array($query,MYSQL_ASSOC);

$query = "SELECT * FROM `admin` WHERE `usname` = $username"; 
$admin_result = mysqli_query($query,$link); 
$admin_result = mysqli_fetch_array($admin_result,MYSQL_ASSOC);

有关mysql_fetch_array如何工作的信息,请参阅http://php.net/manual/en/function.mysql-fetch-array.php

答案 1 :(得分:1)

你应该改变

 $admin_result = mysql_fetch_array($query, MYSQL_ASSOC)

 $admin_result = mysql_fetch_array($admin_result, MYSQL_ASSOC)

PHP DOC ON mysql_ *

  

不鼓励使用此扩展程序。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括: