PDO无法在Linux下运行查询

时间:2014-05-09 20:34:44

标签: php mysql linux windows pdo

我正在尝试为VK编写OAuth类,以便能够对我网站上的用户进行身份验证。我遇到的问题是,我在Windows上编写的代码在Linux上根本不起作用。

我已经通过PHP-> PDO脚本成功连接到我的Linux数据库,但问题是,我试图执行任何功能,我无法获得响应或查询,只是没有发生任何事情。

这是函数的例子:

Class Account
{
    private $Connection;
    private $ErrorHandler;
    private $Template;

    public function __construct()
    {
        global $DB, $Error, $Smarty;
        $this->Connection = $DB->DBConnection;
        $this->Template = $Smarty;
        $this->ErrorHandler = $Error;
    }
public function CheckDataWithVK($Username, $First_Name, $Last_Name, $Birth_Date)
{
        $StatementHandler = $this->Connection->prepare("SELECT username,email,first_name,last_name FROM account WHERE username LIKE :username OR first_name LIKE :fname AND last_name LIKE :lname");
        $StatementHandler->execute(array(':username' => $Username, ':fname' => $First_Name, ':lname' => $Last_Name));
        $Result = $StatementHandler->fetch(PDO::FETCH_ASSOC);
        if($Result['username'] == $Username)
        {
            $BuildUserNameArray = array('Username' => $Username, 'Email' => $Result['email'], 'Name'=> $Result['first_name'], 'Surname' => $Result['last_name']);
            return $BuildUserNameArray;
        }
        else
        {
            if($Result['first_name'] == $First_Name && $Result['last_name'] == $Last_Name)
            {
                $BuildCredentialsArray = array('Username' => $Result['username'], 'Email' => $Result['email'], 'Name'=> $First_Name, 'Surname' => $Last_Name);
                return $BuildCredentialsArray;
            }
            else
            {
                return false;
            }
        }
}

因此在Windows上,我能够获取所有数据并检查用户是否存在于数据库中,而不是Linux上。

让我自私并说我很喜欢这种事情,但即使PDO也没有返回异常,所以我无法跟踪数据流和错误发生的地方。

我已经检查了日志,但似乎该语句甚至没有执行......

有任何帮助吗? 提前致谢

顺便说一句,即时通讯在我的所有网站上使用相同的类,它只是一个表现得像这样......而且,是的,我检查所有设置,一切都是正确的。 另外,我正在使用:

$this->DBConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

至少,如果有异常,我应该看到一些东西,但我什么也看不见 - >没有例外

这是我的 Database.Class.php

public $DBConnection;
private $Template;

public function __construct($username, $password, $database)
{
    global $Smarty;
    $this->Template = $Smarty;
    try
    {
        $this->DBConnection = new PDO("mysql:host=127.0.0.1;dbname=".$database, $username, $password, array(PDO::ATTR_PERSISTENT => true));
        $this->DBConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e)
    {
        $message = $e->getMessage();
        $this->Template->assign('ErrorHeader', $this->Template->getConfigVars('DatabaseError'));
        $this->Template->assign('ErrorMessage', $e->getMessage());
        $this->Template->Display('ErrorHandler.tpl');
        echo "<!-- FreedomCore Servers: PDO Connection Error: $message -->\n";
        die();
    }
}

我的坏,忘了提......白痴.... 我能够插入值,但这个特殊功能存在问题

1 个答案:

答案 0 :(得分:0)

通过将服务器PHP库更新到5.5.12版本来解决问题。

在Windows上,我一直在使用5.5.5,在Linux 5.4.4上,我认为是导致问题的原因