我正在尝试为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();
}
}
我的坏,忘了提......白痴.... 我能够插入值,但这个特殊功能存在问题
答案 0 :(得分:0)
通过将服务器PHP库更新到5.5.12版本来解决问题。
在Windows上,我一直在使用5.5.5,在Linux 5.4.4上,我认为是导致问题的原因