1

私は3つのphpファイルを持っています。最初の (connexion.php) には、新しい PDO 接続を作成するために使用する関数が含まれています。

<?php
header('Content-Type: text/html; charset=utf-8');
date_default_timezone_set('Europe/Paris');

function connexion($host, $user, $pass, $db){
    $db_host = $host;  
    $db_user = $user;  
    $db_password = $pass;  
    $db_database = $db;               
    return $connexion = new PDO("mysql:host=$db_host;dbname=$db_database;charset=utf8", $db_user, $db_password);
}

?>

2 番目のファイル (my_function.php) には、データベースに接続して情報をエコーする関数が 1 つだけ含まれる関数が含まれています。

    <?php
    include(connexion.php);
    function my_first_function(){
        try{
           $connexion = connexion('localhost', 'user', 'user', 'mydb');
           $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
           //some code that echoes information
        }
        catch(...){...}
    }
    ?>

私の問題は、関数を使用できるようにするために、最後のファイルを 3 番目の php スクリプトに含めようとするときです。スクリプトは起動さえしていません。「内部エラー」が発生しました。include(my_function.php) を削除すると、ファイルが正しく読み込まれます。理解できません。誰かが私を理解するのを手伝ってくれることを願っています。前もって感謝します。乾杯。マーク。ここでは、3 番目のファイルの下に:

<?php
include('connexion.php');
include('my_function.php');

//some code
my_first_function();
?>
4

4 に答える 4

2

3 番目のファイルでは使用しないでください。使用include('connexion.php');すると自動的に含まれます。include('my_function.php');

関数宣言が含まれているため、その関数は既に宣言されているため、エラーになります。

于 2012-05-11T22:54:52.503 に答える
1

ファイルを複数回インクルードしようとすると、PHPでは同じ名前の関数を再宣言できないため、エラーが発生します。これを回避するには、次を使用します。

include_once("my_include_file.php");
于 2012-05-11T22:41:49.653 に答える
1

「内部エラー」は PHP の問題ではありません。.htaccess またはその他の apache 設定を確認することをお勧めします。

于 2012-05-11T22:33:12.717 に答える
0

インクルードファイルへの相対パスを指定していないか、インクルードファイル内にエラーがあります。これをテストするには、次のコードを試してください。

if( file_exists('the_file_where_the_function_is.php') )
{
    echo "Found the file";
} else {
    echo "File not found";
}

ファイルが見つかった場合は、含まれているファイルに構文エラーがある可能性があります。また、IEを使用していて、「内部サーバーエラー」が発生していると思います。その場合は、IEの設定に移動し、わかりやすいエラーメッセージをオフにして、実際のP​​HPエラーを確認します。

于 2012-05-11T22:41:26.723 に答える