2016-08-10 11 views
-1

現在、標準のCRUDを実行してPHPを学習しています。私はテーブルのすべての行をクエリしたいときにいつでも使用できる関数(query_entire_table)を書こうとしています。DBクエリ関数を呼び出すと致命的なエラーが発生する

をdb.php:

<?php 
    $db['db_host'] = 'localhost'; 
    $db['db_user'] = 'root'; 
    $db['db_pass'] = ''; 
    $db['db_name'] = 'cms'; 

    foreach($db as $key => $value){ 
    define(strtoupper($key), $value); 
    } 

    $connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

    function query_entire_table($tablename){ 
    $query = "SELECT * FROM " . $tablename; 
    $select_all_entries = mysqli_query($connection, $query); 
    return mysqli_fetch_assoc($select_all_entries); 
    } 
?> 

私は、私は次のエラーを取得する関数を呼び出すとき: 致命的なエラー:がquery_entire_table()を再宣言することはできません(以前に宣言/アプリケーション/ XAMPP/xamppfiles/htdocsに/ CMS /includes/db.php:13)/Applications/XAMPP/xamppfiles/htdocs/cms/includes/db.phpでライン上の17

これは私が関数を呼び出す方法です:

<?php 
    $posts_table = query_entire_table('posts'); 
    while($posts_table){ 
     //doing some stuff... 
    } 
?> 

この時点では、関数を一度インクルードして呼び出すだけで、ここで起こっていることについて私の頭を包むことはできません。

+1

コードがエラーメッセージと一致しません。表示されているdb.phpファイルには実際のコードが17行もありません。 – CBroe

答えて

4

慎重にエラーメッセージをお読みください:あなたはあなたのコードにdb.phpを注入どこ

C:\>php 
<?php 
function foo(){ 
} 
function foo(){ 
} 
^Z 
PHP Fatal error: Cannot redeclare foo() (previously declared in -:3) in - on line 5 

:JavaScriptのような他の言語とは異なり

Cannot redeclare query_entire_table()

を、PHPは、関数やクラス、再宣言直すことはできません。おそらく間違った構成を使用している可能性があります。このような何かを試してみてください:

require_once('/path/to/db.php'); 

_once接尾辞に注意してください。

+0

私はそれを試みたが、同じ結果を得る。 –

+0

これまでのコードは見たことがありませんが、私はあなたを信じています。エディタを使ってコードベース全体で 'query_entire_table'を検索すると、どのような定義がありますか? –

+0

私は物事を少し変え、index.phpに含まれるnavbarの部分にdb.phpファイルを含めました。それはうまくいくようです。私は最初にポストを部分的にしておくべきだった。レッスンで学んだ:) –

1

エラーは、コード内にquery_entire_table関数が宣言されていることを示しています。

これは、db.phpを複数回含むことを意味する場合もあります。通常のインクルードの代わりにinclude_onceを使用してみてください。

関連する問題