4

哦,

这确实是问题出现的底线。但是您之后可能需要其他信息,例如我的连接方式等等,以避免误解。:)

$con = mysql_connect('localhost', 'root', '******');

if(!$con) {
    die('Could not establish connection: ' . mysql_error);
}


mysql_select_db('hunkusersystem');

function user_login($username, $password) {

    //Avoid SQL-injections.
    $username = mysql_real_escape_string($username);
    $password = md5($password);

    //Match user and password
    $sql = mysql_query("SELECT * FROM usersystem WHERE username = '$username' AND password = '$password' LIMIT 1", **$con**);

我的问题是 - 在最后一段代码中,我不能使用资源 id.. 为什么会这样?是因为 mysql_select_db 会被“清除”吗?所以你坚持正确的连接但没有数据库?如果我要使用多个连接,我应该在 mysql_select_db(); 中定义连接吗??

非常感谢您的帮助 :) 来自 Swe 的问候。

4

2 回答 2

4

这是一个范围问题;该函数user_login看不到$con,因为它没有作为参数传入或声明为全局变量。

(请不要将其声明为全局变量;这是非常糟糕的做法)

尝试:

function user_login($username, $password, $con) {
于 2012-08-23T17:55:19.047 回答
2

该变量$con是在全局范围内定义的,而不是在函数的本地范围内。

如果你想在那里使用它,你可以使用:

function user_login($username, $password) {
    global $con;

但是,您最好将变量作为参数传递给函数。

最好的解决方案是使用准备好的语句转移到 PDO / mysqli 并使用依赖注入,但这超出了您的问题范围。

于 2012-08-23T17:55:33.593 回答