[英]Internal Server Error on a PHP app that is calling a function that calls MySQL database
基本上我正在构建一个 MVC 应用程序。 在 Model 中,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);
}
}
?>
controller:
<?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 并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。
服务器错误日志中可能提供有关此错误的更多信息。
此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。
基本上我正在尝试在 model 中完成我的所有数据库工作,然后通过 model 将其传递给 output 它的视图。
我看到一些可能导致错误的问题:
1 - 您正在对“config.php”使用require
,但您确实应该使用require_once
。 无需多次加载。
// Replace the require('config.php') with:
require_once('config.php');
2 - 您是否在“config.php”中定义常量? dbConnection::dbConnection()
function 正在寻找名为dbHostName
、 dbUserName
、 dbPassword
和dbDatabaseName
的常量。 确保您的“config.php”正在定义常量。
3 - dbFunctions.php 中的 while($row = mysql_fetch_array($ dbFunctions.php
while($row = mysql_fetch_array($dbMethods->fetchAllPortfolioItems()))
错误。 while
的mysql_fetch_array
部分在每次迭代时都会“重新计算”,这意味着它会一遍又一遍地执行。 如果首先将$dbMethods->fetchAllPortfolioItems()
的值分配给变量,则 function 仅执行一次, while
将遍历结果。 改用这个:
$result = $dbMethods->fetchAllPortfolioItems();
while($row = mysql_fetch_array($result))
{
$pageContent = $row["description"];
}
根据while
文档:
它告诉 PHP 重复执行嵌套语句,只要 while 表达式的计算结果为 TRUE。
mysql_fetch_array($dbMethods->fetchAllPortfolioItems())
部分, while
您正在使用将始终评估为TRUE
,只要查询返回一行,因为它被一遍又一遍地调用(因此每次返回相同的第一行) .
导致“内部服务器错误”的错误可能是因为您的脚本占用的时间超过了php.ini
中允许的max_execution_time
。
这可能是因为您在查询之前从未真正连接到数据库。
本质上,您已经为dbConnection
制作了与 class 同名的 function,而不是使用__construct
方法。
您将在服务器错误日志中看到一条非常清晰的错误消息,在 linux 上的 apache 中:/var/log/apache/error.log
我还将查看(如果从预览日志中不清楚)mysql 错误日志,该日志也在 /var/log/...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.