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 に答える