我有这段代码:
public function delete($messageID) {
if (is_array($this->sentArr)) {
foreach ($this->sentArr as $key => $value) {
$implodeData[$key] = $this->sentArr[$key]->messageID;
if ($this->sentArr[$key]->messageID == $messageID) {
unset($this->sentArr[$key]);
}
}
$implodedSent = implode(',', $implodeData);
$result = $this->_database->updatePMUser('sentArr', $implodedSent, 'UID', $this->UID);
}
这只是在私人邮件类邮件脚本中删除邮件的代码。在此脚本部分触发之前,我使用$ this-> _database->多次提取消息的名称等 - 一切正常,但当我单击删除按钮并处理请求并将我发送到上面的函数时,我收到以下错误:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user '*private*'@'localhost' (using password: NO) in /var/www/html/evoHTDOCS/tinUser_database.php on line 25
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /var/www/html/evoHTDOCS/tinUser_database.php on line 25
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /var/www/html/evoHTDOCS/tinUser_database.php on line 210
Access denied for user '*private*'@'localhost' (using password: NO)ERROR2
最后忽略“ERROR2”,这只是非结果的捕获,它告诉我哪个部分的脚本出错了。无论如何 - 我在同一个类的同一个实例中多次使用相同的链接资源($ this->连接)而没有错误 - 但由于某种原因,这个会引发该错误。另外,对我来说奇怪的是,在错误消息中,用户名与我用于登录的用户名不同(它们是在配置文件中定义的常量) - 它使用主用户名而不是我的用户是的,我检查了权限和它们都已设置(再次,它在此函数之前多次链接相同的信息。)听起来突然它说它无法连接到应该已经连接的数据库。
如果需要,这里是数据库部分,它启动链接,然后是导致错误的函数:
public function __construct() {
$this->connection = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
public function updatePMUser($field, $data, $whereField, $whereData) {
$data = $this->escapeString($data);
$query = "UPDATE ".PM_USERS_TABLE." SET ".$field." = '$data' WHERE ".$whereField." = '$whereData'";
$result = mysql_query($query, $this->connection);
if ($result)
return $result;
else {
echo mysql_error();
die("ERROR2");
}
}
这一切仍在制作中,所以是的,有一些修剪要做,但是什么可能导致完全相同的连接在特定功能突然失败?我已经检查并重新检查了拼写和所有这些。谢谢你的帮助。
答案 0 :(得分:0)
问题是我正在序列化附加了数据库对象的对象。显然,序列化会破坏数据库连接资源。为了解决这个问题,我添加了一个__wakeup魔术方法,在反序列化后重新建立连接:
public function __wakeup() {
$this->__construct();
}