2016-10-17 5 views
-1

PHP MYSQLiスクリプトに少し問題があります - 私が関数を実行するたびに、別の値を返す条件を満たしていても、常に戻り値0が返されます。私のコードはテーブルからデータを収集することに失敗しているように見えますが、私はその理由を理解できません。ここに私のコード:私のコードはなぜ0を返し続けますか?

function updatePassword($username, $oldPass, $newPass, $newPassConf, $mysqli){ 
    if($stmt = $mysqli->prepare("SELECT password FROM members WHERE email = ?")){ 
     $username = 'user'; //Temp value just to test the statement 
     $stmt->bind_param('s', $username); 
     $stmt->execute(); 
     $stmt->store_result(); 
     $stmt->bind_result($dbOldPass); 
     $stmt->fetch(); 

    } 
    else{ 
     return 0; // Failed to retrieve pw from DB 
    } 
    if($dbOldPass == $oldPass){ 
     if($newPass == $newPassConf){ 
      if($stmt = $mysqli->prepare('UPDATE members SET password=? WHERE username=?')){ 
       $stmt->bind_param('ss', $newPass, $username); 
       $stmt->execute(); 
       return 1; // Success 
      } 
     }else{ 
      return 2; // Password and PW confirmation are wrong 
     } 
    } 
} 

あなたが与えることができるかもしれない任意のヘルプの事前に感謝!

+0

は 'のように見えます$ mysqli-> prepare() 'が失敗しています。正しく接続しましたか? –

+1

@ Praveen-Kumarこんにちは、私はそう信じています - 私は他の多くの関数で同じ$ mysqli変数を使用しました。私はコピーし、コード内の他の関数から同様の仕事を実行するコードを貼り付けてみましたが、私はまだ同じエラーが発生します。 – Liton12

+0

エラー報告、それを使用してください。あなたの質問は失敗し、あなたはその理由を知る必要があります。それとクエリの 'mysqli_error()'。 –

答えて

-1

戻りコード0は、準備済みの文を作成できなかったことを示します。だから、

、あなたの$ mysqliのオブジェクトが正しく接続されていない($mysqli->errorをチェックしてみてください)、またはあなたが、使ってみて、その場合にはfalseを持つリソースを比較するのよくある間違いに実行されている次のいずれか

if(($stmt = $mysqli->prepare("SELECT password FROM members WHERE email = ?")) !== FALSE) 
+0

こんにちは、アイデアありがとう。私のサイト上でMySQLを扱うことは絶対に不可能であり、もはや機能していないように見えます。突然接続の問題があるので、これを調べる必要があります。 – Liton12

関連する問題