我还是比较新的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)但它没有做任何事情。但它在数据库连接期间从不显示任何回声。我的数据库包含所有预期的字段。有什么想法吗?谢谢!
答案 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所以不会有命名空间。
感谢所有其他答案。