1

PDO を宣言しましたが、何らかの理由で、宣言時にスクリプトが停止します。エラーは発生しません。何らかの理由で失速するだけです。私はその底にたどり着くことができないようです。私が何か間違ったことをしているなら、私に知らせてください

<?php

 // this function creates a PDO that can be used to connect to our mysql server
 function getConnectionPDO($dbName){
     if(!empty($dbName)){
         $pdo = new PDO('mysql:host=localhost;port=8889;dbname='.$dbName,'root','root');
         return $pdo;
     }
     else {
         return null;
     }
 }

 // gets login parameters
 function getLogin($username,$password){
     if(!empty($username) && !empty($password)){
         $pass_hash1 = md5($password);
         $pass_hash2 = md5($pass_hash1); // hashes the password twice
         //creating connection
         $pdo = getConnectionPDO('User_Data');
         if($pdo != null){
             $query_string = 'SELECT * FROM users WHERE username=:username AND password=:password';
             $prepare = $pdo->prepare($query_string); // preparing for query
             // binding parameters
             $prepare->bindParam(':username', $username);
             $prepare->bindParam(':password', $pass_hash2);
             // testing if query passed successfully
             $columns = $prepare->fetchColumn();
             if($columns == 1){
                 return true;
             }
             else {
                 return false;
             }
         }
         else {
             return false;
         }
     }
 }
?>

助けてくれてありがとう=)

4

3 に答える 3

0

あなたが投稿したコードにはエラーがないようですので、何でもかまいません。

コンストラクターに 4 番目の「オプション」パラメーターを で渡すと、デバッグが容易になる場合がありますPDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION

これによりPDO、エラーが発生したときに例外がスローされます。

$pdo = new PDO('mysql:host=localhost;port=8889;dbname='.$dbName,'root','root', array(
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
于 2013-08-31T22:52:10.473 に答える
0

接続がタイムアウトしているようです。MySQL が実行中で、ポート 8889 で実行されていることを確認できますか?

Linux を使用している場合は、 を実行して一致するものnetstat -tulpnを見つけ、ローカル アドレスがであることを確認します。そうでない場合は、PDO のポート構成が間違っています。Windows を使用している場合は、(管理者権限のコマンド プロンプトで(実行を停止するには CTRL+C を押す必要がある場合があります)) 実行し、mysqld.exe を探して、ローカル アドレスが.PID/Program NameXXXX/mysqld127.0.0.1:8889netstat -a -b0.0.0.0:8889

于 2013-09-01T00:39:35.873 に答える
0

試してみる:

 new PDO("mysql:host=localhost;port=8889;dbname=$dbName",'root','root');

また追加

$prepare->execute(); 

最後の bindParam の後

于 2013-08-31T23:38:54.597 に答える