2011-07-04 27 views
0

基本的に私はMVCアプリケーションをビルドしています。モデルでは、dbFunctions.phpこのコードです:MySQLデータベースを呼び出す関数を呼び出す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"); 

?> 

ここでエラーです:基本的に

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

私はすべてのDB作業を第一にやろうとしていますモデルを介してそれをビューに渡して出力します。

+3

エラーログで実際のエラーを確認し、投稿してください。その後、私たちはあなたを助けることができます。 – Brad

+0

どうすればいいですか? –

+1

あなたのサーバのどこかに(Linuxボックスの/ var/logをチェックしてください)、エラーログがあります。そのログを見つける必要があります。ログファイルの最後にエラー(または多くのエラー)があります。オリジナルの質問をエラーで編集してください。お手伝いできます。 「内部サーバーエラー」は完全に汎用であり、問​​題を突き止めるのに役に立たない。 – Brad

答えて

1

クエリを実行する前に実際にデータベースに接続していない可能性があります。

__constructメソッドを使用する代わりに、基本的にはdbConnectionのクラスと同じ名前の関数を作成しました。

+1

彼の "config.php"に問題があるかもしれませんが、クラスと同じ名前の関数に何も問題はありません。 PHP4とPHP5で動作する方法は、[ここに記載されている](http://php.net/manual/en/language.oop5.decon.php)(下の最初の例の真下)と下位互換性があります。 –

+0

良い点、私はそれが下位互換性があることを認識していませんでした:) – jerluc

+0

ハイジャールルク、私はまた、この同じエラーが発生しています。私の場合は、私は挿入クエリの前に接続ファイルを含めたことを確認しました。 localhostではうまくいきます。しかし、私はサーバー上のプロジェクトを移動したときだけ、私はこのエラーが発生しています。あなたはこのエラーの次の可能性を教えていただけますか? – Jaydipsinh

-1

Linux上のApacheには、サーバーのエラーログに非常に明確なエラーメッセージが表示されます。/var/log/apache/error.log
をし、それがより明確でない場合、私はまた(見てみます - あなたがしている

1:プレビューは、私はエラーに寄与し得ることをいくつかの問題を参照してください...どこかの/ varの下に/ /ログもあるMySQLのエラーログ、で)

4

を記録します"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 - while($row = mysql_fetch_array($dbMethods->fetchAllPortfolioItems()))dbFunctions.phpは間違っています。 whilemysql_fetch_array部分は、繰り返し実行されるたびに「再計算されます」という意味です。変数に最初に$dbMethods->fetchAllPortfolioItems()の値を代入すると、関数は1回だけ実行され、whileは結果を反復処理します。代わりにこれを使用します。whileドキュメントを1として

$result = $dbMethods->fetchAllPortfolioItems(); 

while($row = mysql_fetch_array($result)) 
{ 
    $pageContent = $row["description"]; 
} 

を:

It tells PHP to execute the nested statement(s) repeatedly, as long as the while expression evaluates to TRUE.

使用しているwhilemysql_fetch_array($dbMethods->fetchAllPortfolioItems())一部が常にある限り、それはなってきたとして、クエリが行を返すようTRUEと評価されます何度も何度も同じ呼び出しが返されます。

「内部サーバーエラー」の原因となっているエラーは、スクリプトがphp.iniに許可されているmax_execution_timeを超えているためです。

+0

@Snow_Mac - 上記の考えのいずれかで問題を解決するのに役立ちましたか?それが解決されない場合は、私に知らせてくださいと私はあなたのために私が思い付くことができます他に何が表示されます。 –

+0

遅く返事を申し訳ありません。これらはすべてそれを修正しました!ご協力いただきありがとうございます! –

関連する問題