Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取mysql链接资源错误-但与之前使用的成功链接资源相同_Php_Mysql - Fatal编程技术网

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();
   }

哦,实际上数据库中没有任何东西会被改变——但我猜你是这么想的。