php如何输出到屏幕+使用mysql在屏幕上显示值?

时间:2011-07-02 12:01:33

标签: php oop namespaces autoload

我还是比较新的php。

我在我的webroot下面创建了一个名为lib的子文件夹,并添加了test.php

然后我添加了以下代码......

<?php
new \Wisdom\Question();
?>

然后我在lib中创建了另一个名为“Wisdom”的文件夹和一个名为“Question”的类,其代码如下......

<?php

class Question {

function __construct()
{
    $user="username";
    $password="password";
    $database="dbname";
    mysql_connect(localhost,$user,$password);
    @mysql_select_db($database) or die( "Unable to select database");
    $query = "SELECT * FROM questions";
    $result = mysql_query($query);
    $num = mysql_numrows($result);
    mysql_close();
    echo "<b><center>Database Output</center></b><br><br>";

    $i=0;

    while($i < $num)
    {
        $description = \mysql_result($result,$i, "description");
        $id = \mysql_result($result,$i, "id");
        echo "<b>$id $description</b>";
        $i++;
    }

}

}

当我在浏览器中查看test.php时,它只显示错误500(在另一个注释中,如何在屏幕上显示php错误?我尝试了ERROR_REPORTING(E_ALL)但它没有做任何事情。但它在数据库连接期间从不显示任何回声。我的数据库包含所有预期的字段。有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:1)

从您的问题来看,要说出您面临的错误并不容易。 500内部服务器错误可能有多种原因。它可能是PHP关注的问题,但它也可以是Web服务器的东西。

因此,我实际可以给出的最佳答案是您正确配置了PHP error handling / PHP error configuration,然后检查了php错误日志。

同时您还需要检查您的网络服务器错误日志。

接下来,由于您发布的代码,这些是我已经想到的一些想法,但这可能会产生误导:

您尝试实现的功能需要启用自动加载器。当您尝试实例化它时,看起来类\Wisdom\Question不存在:

new \Wisdom\Question();

自动加载器需要实际加载目录/文件布局中不存在的类,就像你似乎使用的那样(我不能特别说,因为你的问题没有提供更多信息)。

对于自动加载器,您似乎可以使用任何兼容PSR-0的自动加载器for example this one

接下来,类定义还需要顶部正确的命名空间

<?php
namespace Wisdom;
class Question {

答案 1 :(得分:1)

\Wisdom\Question语法适用于namespaces,而非文件夹。您需要加载包含该类的文件,而该文件无法使用该语法。使用简单的东西:

require 'Wisdom/Question.php';
new Question;

答案 2 :(得分:0)

哈哈,刚刚发现php版本是5.2所以不会有命名空间。

感谢所有其他答案。