指定连接是否清除所选数据库?

时间:2012-08-23 17:52:57

标签: php mysql resources

O,

它确实是问题解决的底线..但你可能想要其他信息,如我连接等等,以避免误解。 :)

$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的问候。

2 个答案:

答案 0 :(得分:4)

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

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

尝试:

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

答案 1 :(得分:2)

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

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

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

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

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