不推荐使用引用来指定new的返回值

时间:2011-03-19 15:00:35

标签: php reference

我是PHP的新手,我正在玩一些代码,看看我能学到什么。我有一个简单的小项目,我连接到一个mysql数据库并显示一个表的记录。

当我将所有代码放在一个文件中时,一切运行顺利,只要我尝试将一大块代码放入一个separte PHP文件并使用include或require_once我就会得到错误分配新的返回值引用已弃用... PEAR \ config.php yadda yadda

我已经完成了一些研究,我明白在PHP 5中不再接受通过引用传递对象(& obj),这很好,但是在我的代码中我没有一个&符号,再次,它一切正常,如果它们都在同一个.php文件中。所以我想我可能会对我的包含或某事做错。

这是我在主页上用require_once调用“完成工作”的文件

include '/config.php';
// Open the database connection

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);

        //Define and run the query
        $query = "SELECT * FROM wp_posts";
    $result = mysql_query($query);

    echo mysql_error();

        //Close the db connection
    mysql_close();

    echo "<table><tr><td>Post Title</td><td>Post Status</td><td>Post Date</td></tr>";

        //Loop through result set and display data

        while($tdata=mysql_fetch_array($result))
        {
            echo "<tr><td>$tdata[post_title]</td><td> $tdata[post_status]</td><td> $tdata[post_date]</td></tr>";     // name class and mark will be printed with one line break
    }

        echo "</table>";

无论如何,我知道我的代码并不漂亮,我仍然试图弄明白。感谢您提供的任何帮助。

其他信息: 好的,我知道我是一个包含东西的完整菜鸟,我道歉。所有人都无法绕过它。但这里有一些额外的信息。这是我正在接收的错误消息的全文(注意:我的代码仍然运行,我的表仍然显示)

不推荐使用:在第80行的C:\ xampp \ php \ PEAR \ Config.php中弃用了按引用分配new的返回值

不推荐使用:在第166行的C:\ xampp \ php \ PEAR \ Config.php中弃用了按引用分配new的返回值

不推荐使用:在第111行的C:\ xampp \ php \ PEAR \ Config \ Container.php中弃用了按引用分配new的返回值

同样,我使用netBeans作为我的IDE,所以在我的Netbeans中我转到了Tools-Options并转到PHP并将C:\ xampp \ php \ PEAR设置为全局包含路径(无论这意味着什么,但尽管如此,这似乎是一个好主意)。

我想如果我的包含路径设置正确(/ xampp / php ...)那么为什么我仍然收到错误。哎呀。谢谢你所有的帮助。

6 个答案:

答案 0 :(得分:1)

这是您正在使用的第三方库导致问题,它已经过时并且正在使用诸如通过引用返回这些不再被认为是良好实践的事情。您应该升级有问题的库。从你写的东西我猜它是这个库。 http://pear.php.net/package/Config/redirected

尝试从shell运行pear upgrade config

答案 1 :(得分:1)

您的包含路径可能设置错误。

该脚本似乎更喜欢当前工作目录下的PEAR include目录。 有几种方法可以解决这个问题:

<强> 1。使用绝对包括

例如,在您的情况下:

include dirname(__FILE__) . 'config.php'; // pre-PHP 5.3
include __DIR__ . 'config.php'; // PHP 5.3

<强> 2。更改包含路径

要了解更多相关信息,请参阅php.net文档中的this page

答案 2 :(得分:1)

打开您的config.php并转到第89行并在&

之后删除=

从:

"$this->container =& new Config_Container('section', 'root');"

为:

"$this->container = new Config_Container('section', 'root');"

同样是第166行。

答案 3 :(得分:0)

它只是梨包错误,它描述了有关赋值的问题。所以我们通常可以替换分配    的 =&安培; with = 在错误陈述的给定行中,这将解决我们的问题。

答案 4 :(得分:0)

我有类似的问题。解决方案是文件的更改名称。 config.php获取pear文件夹中的文件而不是配置文件。

答案 5 :(得分:-1)

只需运行C:\ xampp \ php \ pear-update.bat并重新启动Apache服务器(在Windows macchine上)。 对于linux macchine,请遵循GordonM的指导。