基本上我正在构建一个MVC应用程序。在模型中,dbFunctions.php是以下代码:
<?php
require("config.php");
require("dbconnection.php");
class dbFunctions
{
// setting up the object to connect to the Database
function __construct()
{
$dbConnect = new dbConnection();
}
public function insertPortfolioAdminData($value='')
{
# code...
}
public function login($value='')
{
# code...
}
public function logout($value='')
{
# code...
}
public function dbStoreContactForm($value='')
{
# code...
}
// returns a query with a collection of database objects for the portfolio
public function fetchAllPortfolioItems()
{
$fetchAllPortfolioItemsReturnQry = mysql_query("SELECT description FROM PortfolioItems") or die ('Error: '.mysql_error ());
if($fetchAllPortfolioItemsReturnQry){
return $fetchAllPortfolioItemsReturnQry;
}
}
public function fetchSinglePortfolioItems($primaryKey='')
{
# code...
}
}
?>
dbConnection.php
<?php
require("config.php");
class dbConnection {
private $databaseConnection;
public function dbConnection(){
$databaseConnection = mysql_connect(dbHostName,dbUserName,dbPassword) or die(mysql_error());
mysql_select_db(dbDatabaseName) or die(mysql_error());
}
public function closeConnection(){
mysql_close($databaseConnection);
}
}
?>
控制器:
<?php
// Calling the class to do the work on database
require("./model/dbfunctions.php");
$dbMethods = new dbFunctions();
while($row = mysql_fetch_array($dbMethods->fetchAllPortfolioItems()))
{
$pageContent = $row["description"];
}
// calling the template
require("./views/page_12.php");
?>
错误如下:
内部服务器错误
服务器遇到内部错误或配置错误,并且无法完成您的请求。
请联系服务器管理员webmaster@mvcportfolio.adambourg.com并通知他们发生错误的时间发生的任何事情这样做可能导致了错误。
有关此错误的详细信息可能在服务器错误日志中可用。
此外,404未找到错误在尝试使用处理请求的ErrorDocument。
基本上,我试图在模型中完成所有的DB工作,然后通过模型将其传递给视图以输出它。
我看到可能导致错误的几个问题:
1-对于"config.php"使用require
,但实际上应该使用require_once
。没有必要多次加载。
// Replace the require('config.php') with:
require_once('config.php');
2-您是否在"config.php"中定义常量?dbConnection::dbConnection()
函数正在查找名为dbHostName
、dbUserName
、dbPassword
和dbDatabaseName
的常量。确保您的"config.php"正在定义常量。
3-dbFunctions.php
中的while($row = mysql_fetch_array($dbMethods->fetchAllPortfolioItems()))
错误。while
的mysql_fetch_array
部分在每次迭代时都会"重新计算",这意味着它会一次又一次地执行。如果您先将$dbMethods->fetchAllPortfolioItems()
的值分配给一个变量,则该函数只执行一次,while
将遍历结果。使用这个替代:
$result = $dbMethods->fetchAllPortfolioItems();
while($row = mysql_fetch_array($result))
{
$pageContent = $row["description"];
}
根据while
文件:
它告诉PHP执行嵌套重复语句,只要while表达式的计算结果为符合事实的
您正在使用的while
的mysql_fetch_array($dbMethods->fetchAllPortfolioItems())
部分将始终计算为TRUE
,只要查询在被反复调用时返回一行(因此每次都返回相同的第一行(。
导致"内部服务器错误"的错误可能是因为脚本占用的php.ini
超过了允许的max_execution_time
。
这可能是因为在查询数据库之前,您从未真正连接到数据库。
从本质上讲,您已经为dbConnection
生成了一个与类同名的函数,而不是使用__construct
方法。
在linux上的apache中,您将在服务器错误日志中看到一条非常清晰的错误消息:/var/log/apache/error.log
我还想看看(如果从预览日志中看不清楚的话(mysql错误日志,它也在/var/log/下。。。