use*_*659 10 php mysql sql pdo
在我的错误日志中获得大量结果,如下所示.数据库中的所有表都是innodb,就与这些表的任何交互而言,所有表都是带有预处理语句的pdo.
正如我所说,所有错误几乎与下面列出的错误相同,但是对于几个不同的页面会发生.无论页面如何,错误行总是指向我开始一个新语句的地步...例如$stmt = $db->prepare("........语句本身工作得非常好而没有错误所以我有点困惑于是什么导致了这一点.
对于不同的页面,这样的多个错误:
[25-Sep-2014 10:19:09 America/Chicago]无法连接数据库:SQLSTATE [HY000] [2002]资源暂时不可用[25-Sep-2014 10:19:09 America/Chicago] PHP致命错误:在第28行的/home/test/public_html/add_log.php中调用非对象的成员函数prepare()
示例将错误点设置为 - 在这种情况下$stmt = $db->prepare("具体为行.它始终指向开始新的准备语句的行.
$stmt = $db->prepare("
SELECT
accounts.account_id,
computers.computer_id,
computers.status,
users.user_id
FROM accounts
LEFT JOIN computers
ON computers.account_id = accounts.account_id AND computers.computer_uid = :computer_uid
LEFT JOIN users
ON users.computer_id = computers.computer_id AND users.username = :username
WHERE accounts.account_key = :account_key
");
//bindings
$binding = array(
'account_key' => $_POST['account_key'],
'computer_uid' => $_POST['computer_uid'],
'username' => $_POST['username']
);
$stmt->execute($binding);
//result (can only be one or none)
$result = $stmt->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
连接脚本:
<?php
if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');
// db config
$db_host = 'localhost';
$db_database = '*******';
$db_user = '*******';
$db_pass = '*******';
//db connection
try {
$db = new PDO("mysql:host=$db_host;dbname=$db_database;charset=utf8", $db_user, $db_pass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => true));
}
catch(PDOException $e) {
error_log("Failed to connect to database: ".$e->getMessage());
}
?>
Run Code Online (Sandbox Code Playgroud)
我想到的事情:
这个特殊的脚本运行很多...有时可以在一秒钟内多次调用它.
在这个网站上,我对所有准备好的语句使用相同的格式... $ stmt = ... $ result或$ results = ...我没有关闭光标,但是,从我的研究中我不需要作为驱动程序是MySQL,它是自动完成的.
我在我的连接设置中将PDO :: ATTR_PERSISTENT设置为true - 这会对此错误产生影响吗?
所有这些错误在这里发生了什么?任何人?
编辑 - 更多信息:
由于执行上述操作,错误已更改为SQLSTATE[HY000] [2002] Connection timed out.这实际上是一个人/ comp连接到'我'的问题,或者实际上是我的服务器/数据库的问题?
编辑2:
我的使用$_SERVER['DOCUMENT_ROOT']是否可能导致问题?由于此文件经常被"命中",因此通常也需要连接脚本.我需要在每个页面上按如下所示连接脚本:
需要$ _SERVER ['DOCUMENT_ROOT'].'/ custom/functions/connect.php';