以下代码无法正常工作:

    public function __construct($thread_id)
    {
        require_once('../private/mysqli_connect.php');
        require_once('../php_classes/class_message.php');

        $this->thread_id=$thread_id;

        $q="SELECT *
        FROM message_thread_name
        WHERE thread_id=2";

        if($r=@mysqli_query($dbc, $q))
        {
            while($row=mysqli_fetch_array($r, MYSQLI_ASSOC))
            {
                $this->poster=$row['name'];
                $this->subject=$row['thread_subject'];
            }
        }

        $qm="SELECT message_id
        FROM message
        WHERE thread_id=$this->thread_id";

        if($rm=@mysqli_query($dbc, $rm))
        {
            while($rowm=mysqli_fetch_array($rm, MYSQLI_ASSOC))
            {
                $message=new message($rowm['message_id']);
                array_push($this->messages, $message);
            }
        }
    }

我没有解决它的想法,所以我更改了require_once('../private/mysqli_connect.php'); require('../private/mysqli_connect.php'); ,令我惊讶的是,它确实奏效了。 关于为什么会这样的任何想法?

谢谢。

===============>>#1 票数:0 已采纳

当您使用require_once时, PHP将检查文件是否已经包含,如果包含,则不要再次包含(要求)该文件。 您可以在这里阅读。

那么这里的问题是什么呢?
从问题陈述中,我假设您之前已经创建了此类的另一个实例,或者您已经在其他地方包含了mysqli_connect.php 并在mysqli_connect.php中创建了类似的连接链接。

$ dbc = mysqli_connect(...);

因此,当您使用require_once作为mysqli_connect.php不再加载时,您的$ dbc变量仍然未定义。 并且您的查询不起作用。 但是,当您使用require而不是require_once时 ,将再次加载文件,并再次创建新的连接,并且代码可以正常工作。

注意:尽管改变了要求,解决了您的问题,但您不应该这样使用它。 每次您创建类的新实例时,它将创建与数据库的新连接。 考虑一下:您可以尝试创建类似这样的内容

  ask by Dan Luba translate from so

未解决问题?本站智能推荐:

2回复

(PHP):警告:include_once,无法打开流:权限被拒绝

我正在学习如何使用Php和Mysql(XAMPP)编写“ 注册”页面 。 现在,我在此网站上下载了源代码: http://net.tutsplus.com/tutorials/php/create-a-signup-form-with-email-confirmation/
1回复

Include_once无法打开流

我已经研究了一段时间了,找不到答案。 在XAMPP上处理PHP / mySQL项目。 简化的结构如下: editor.php的代码: 表单的action =“ controllers / admin / editor.php”。 首先,当我打开admin.php时,显示
4回复

PHP中的include和include_once问题

我目前正在开发一个PHP项目。 我将项目文件复制到我的本地框。 除了一件事,它运行良好。 这是文件夹层次结构: 在index.php中,有一行: 其中应包括list.php 但是在list.php中有一行: 由于list.php不在根目录中,因此event
5回复

PHP中的include和include_once

有人可以向我解释何时应该使用include和include_once以及应该如何使用它。 我是PHP新手,想了解这是外行人的条款。 关于PHP文档在www.php.net上提到的内容不太清楚。 我们假设我有以下文件夹结构 如果我必须在CreateUser.php中使用Use
1回复

PHP include_once和Adobe DreamWeaver代码提示

所以, 我非常喜欢开发IDE中的代码提示,例如我们在Eclipse,FlashBuilder和Dreamweaver中获得的代码提示。 现在,当使用Dreamweaver开发PHP时,我发现一个简单的包含向上目录引用的include_once产生后果,而在includes with
3回复

在2个单独的MySQL连接中是否包含include_once 标签只会连接一次?

在这种情况下,我使用: 我是否应该在第二个PHP标签中包含include_once?
3回复

关于PHP中include_once的困惑

我有这个: 其中FactoryA.php是一个Factory类,它创建obj A,并且可以从数据库中创建/读取/更新/删除A。 Log.php是将日志发送到文本文件log.txt 。 FactoryA将需要A.Class (用于创建实例)和Database 。 所有3个类都需要
3回复

PHP中的混淆URL include_once

我知道这不是使用stackoverflow的正确方法,但是我只需要快速解决我的问题 这是文件夹层次结构 在login.php中,我使用include_once("../php/connection.php") 在index.php中,我使用include_once("logi
2回复

如何在PHP中处理include_once循环?

我有3个不同的文件- fileMainIncludeEverywhere.php fileMinorInclude.php fileToRun.php 我有很多文件,例如fileToRun.php 。 当前,我的代码没有遇到任何错误,但是我想知道是否在任何
4回复

在include_once()中的PHP目录问题

我在/ image目录中有一个Header.php文件。 我曾经写过包含文本和图像的标题内容。 这个Header.php文件包含在php项目的不同目录和子目录的所有其他页面中。 我的问题是,当从子目录访问任何页面时,header.php中的图像未显示在该页面中。 谢谢