mysqli_real_escape_string()期望参数1为mysqli; mysql_result()期望参数1是资源

时间:2013-09-19 06:42:43

标签: mysqli undefined mysql-real-escape-string

我收到了这些错误:

  

注意:未定义的变量:第11行的login.php中的链接

     

警告:mysqli_real_escape_string()期望参数1为mysqli,   在第11行的login.php中给出的null

     

注意:未定义的变量:第18行的login.php中的链接

     

警告:mysqli_query()期望参数1为mysqli,null给定   在第18行的login.php中

     

警告:mysql_result()期望参数1为resource,null给定   在第19行的login.php中

以下是代码:

<?php

session_start();


$link = mysqli_connect('localhost','root','') or die(); 
mysqli_select_db($link,'lr') or die();  


function sanitize($data) {
    return mysqli_real_escape_string($link, $data);     <<line 11
}



function user_exists($username) {
    $username = sanitize($username);    
    $query = mysqli_query($link, "SELECT COUNT('user_id') FROM 'users' WHERE 'username' = '$username'");        <<line 18
    return (mysql_result($query, 0) ==1) ? true : false;        <<line19

}


if (empty($_POST) === false) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    if (empty($username) === true || empty($password) === true) {
        $errors[] = 'You need to enter a username and password';    

    } else if (user_exists($username) === false) {  
        $errors[] = 'User not found';
        }


}

?>

有什么问题?

2 个答案:

答案 0 :(得分:0)

你需要在函数内使用$ _GLOBALS ['link']。

像这样:

    function sanitize($data) {
    return mysqli_real_escape_string($_GLOBALS['$link'], $data);     <<line 11
}

user_exist函数中的内容相同。

答案 1 :(得分:0)

Global可能已经努力解决问题,但最好将变量传递给函数。

function sanitize($data, $A) {
    return mysqli_real_escape_string($A, $data);     <<line 11
}
function user_exists($username, $A) {
    $username = sanitize($username);    
    $query = mysqli_query($A, "SELECT COUNT('user_id') FROM 'users' WHERE 'usernam' = '$username'");        <<line 18
    return (mysql_result($query, 0) ==1) ? true : false;        <<line19

}

if (empty($_POST) === false) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    if (empty($username, $link) === true || empty($password) === true) {
        $errors[] = 'You need to enter a username and password';    

    } else if (user_exists($username, $link) === false) {  
        $errors[] = 'User not found';
        }


}