【问题标题】:PHP PDO not workingPHP PDO 不工作
【发布时间】:2013-08-31 22:32:03
【问题描述】:

我已经声明了一个 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;
         }
     }
 }
?>

提前感谢您的帮助 =)

【问题讨论】:

  • 用户名字段是否唯一?

标签: php javascript html mysql pdo


【解决方案1】:

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

如果使用PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION 传递构造函数的第四个“选项”参数,您可能会发现更容易调试。

这将使PDO在遇到错误时抛出异常。

$pdo = new PDO('mysql:host=localhost;port=8889;dbname='.$dbName,'root','root', array(
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));

【讨论】:

    【解决方案2】:

    试一试:

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

    还添加一个

    $prepare->execute(); 
    

    在最后一个 bindParam 之后

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-06-23
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-27
        • 2016-04-13
        相关资源
        最近更新 更多