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

试试看:

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

还添加一个

$prepare->execute(); 

在最后一个 bindParam 之后

于 2013-08-31T23:38:54.597 回答
0

听起来您的连接正在超时。你能确认 MySQL 正在运行,并且在 8889 端口上运行吗?

如果您使用的是 Linux,请运行netstat -tulpn,找到PID/Program Name匹配项XXXX/mysqld并确保本地地址为127.0.0.1:8889,如果不是,则您的 PDO 端口配置错误。如果您在 Windows 上,您可以运行(在具有管理员权限的命令提示符中netstat -a -b(您可能需要按 CTRL+C 停止执行)并查找 mysqld.exe,并确保本地地址为0.0.0.0:8889.

于 2013-09-01T00:39:35.873 回答
0

您发布的代码似乎没有错误,因此可能是任何错误。

如果将构造函数的第四个“选项”参数传递给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 回答