Php 获取mysql链接资源错误-但与之前使用的成功链接资源相同
我有以下代码:Php 获取mysql链接资源错误-但与之前使用的成功链接资源相同,php,mysql,Php,Mysql,我有以下代码: public function delete($messageID) { if (is_array($this->sentArr)) { foreach ($this->sentArr as $key => $value) { $implodeData[$key] = $this->sentArr[$key]->messageID; if ($this->sentArr[$
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->\u database->多次提取消息的名称,等等,这些都很好,但是当我单击delete按钮,它处理请求并将我发送到上面的函数时,我得到以下错误:
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->connection),但由于某种原因,这一次出现了错误。另外,让我感到奇怪的是,在错误消息中,用户名与我登录时使用的用户名不同(它们是配置文件中定义的常量)-它使用的是主用户名而不是我的用户名,是的,我检查了权限,并且都设置好了(同样,在这个函数之前,它多次与相同的信息链接都很好。)听起来它突然说它无法连接到它应该已经连接到的数据库
如果需要,这里是启动链接的数据库部分,然后是导致错误的函数:
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");
}
}
这一切仍在生产中,因此需要进行一些修整,但什么会导致完全相同的连接在特定功能上突然失败?我已经检查并重新检查了拼写和所有这些。感谢您的帮助。问题是我正在序列化连接了数据库对象的对象。显然是seria取消序列化会破坏数据库连接资源。为了解决此问题,我添加了一个_wakeup magic方法,在取消序列化后重新建立连接:
public function __wakeup() {
$this->__construct();
}
哦,实际上数据库中没有任何东西会被改变——但我猜你是这么想的。