2016-08-10 4 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를

<?php 
    $posts_table = query_entire_table('posts'); 
    while($posts_table){ 
     //doing some stuff... 
    } 
?> 
: /includes/db.php:13) 라인 /Applications/XAMPP/xamppfiles/htdocs/cms/includes/db.php에서 17

이것은 내가 함수를 호출하는 방법입니다

이 시점에서 나는 함수를 한 번만 포함하고 호출하고 여기서 일어나는 일을 머리로 감쌀 수 없습니다.

+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 

: 자바 스크립트와 같은 다른 언어와는 달리

Cannot redeclare query_entire_table()

을, PHP 함수 나 클래스 - 재 선언을 다시하는 것을 허용하지 않습니다 아마도 틀린 구조를 사용하고있을 것입니다. 이런 식으로 뭔가를 시도 :

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

_once 접미사을 유의하시기 바랍니다.

+0

나는 그것을 시도했지만 동일한 결과를 얻는다. –

+0

지금까지 코드를 보지 못했지만 당신을 믿습니다. 편집기를 사용하여 전체 코드베이스에서'query_entire_table'을 검색 할 때 어떤 정의가 있습니까? –

+0

나는 약간을 바꿨고 index.php에 포함되어있는 navbar partial에 db.php 파일을 포함 시켰습니다. 그래서이 함수를 사용할 수 있습니다. 그것은 작동하는 것 같습니다. 나는 처음부터 부분적으로 게시물을 만들어야했다. 수업은 :) –

1

오류는 코드의 다른 곳에서 query_entire_table 함수를 선언했다는 오류가 표시됩니다.

이렇게하면 db.php를 두 번 이상 포함 할 수도 있습니다. 일반 포함 대신 include_once을 사용해보세요.

관련 문제