2011-01-08 27 views
1

ちょっと、私は最近、準備された文がmysqlの注射から私のウェブサイトを保護する最良の方法であると聞いたことがあります。だから私は疑問を持って、私はこれが動作しない理由を理解するように見えることはできません。準備文のヘルプ

$mysqli=new mysqli("localhost", "***", "***","***") or die(mysql_error()); 


       function checklogin($username, $password){ 


       $result = $mysqli->prepare("SELECT * FROM users WHERE username = ?"); 
       $result->bind_param("s", $username); 
       $result->execute(); 

私は次のエラーを取得:注意:未定義の変数を:/var/www/JMToday/loginchk.php上でmysqliの45行目致命的なエラー:行45の/var/www/JMToday/loginchk.phpの非オブジェクト上のメンバ関数prepare()を呼び出す

答えて

3

あなたはグローバル変数($ mysqli)を使用しようとしています機能。 (エラーメッセージ「未定義の変数」は、このインスタンスで洞察に満ちた信じられないほどです。)

あなたがする必要があり、次のいずれか

  1. グローバルとして変数を宣言します。 (つまり、checklogin関数の最初の行に "global $mysqli;"を追加してください)

  2. $ mysqliの定義をchecklogin関数内に移動します。

一般的なアドバイスとして、PHPマニュアルのvariable scopeセクションを読むことをお勧めします。