2017-03-21 7 views
1

私はPHPが新しくできています。 データベース「db_connection.php」への接続用のファイルが1つあります。phpグローバルキーワードが異なるファイルにあります

<?php 
    //With constants 
    define("DB_SERVER","localhost"); 
    define("DB_USER","root"); 
    define("DB_PASS",""); 
    define("DB_NAME","db_name");  
    $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME); 
    // Test if connection succeeded 
    if(mysqli_connect_errno()) { 
    die("Database connection failed: " . 
     mysqli_connect_error() . 
     " (" . mysqli_connect_errno() . ")" 
    ); 
    } 
?> 

私は、クエリ

<?php 
    function confirm_query($result_set){ 
     if (!$result_set) { 
      die("Database query failed."); 
     } 
    } 

function find_all_subjects(){ 
    global $connection; 
    $query = "SELECT * "; 
    $query .= "FROM subjects "; 
    $query .= "WHERE visible = 1 "; 
    $query .= "ORDER BY position ASC"; 
    $subject_set = mysqli_query($connection, $query); 
    // Test if there was a query error 
    confirm_query($subject_set); 
    return $subject_set; 
} 
?> 

i "がmain.php" 関数を呼び出すメインファイル

する機能を持っている.where私も " のfunctions.php" と呼ばれる別のファイルを持っています
<?php require_once("db_connection.php"); ?> 
<?php require_once("functions.php"); ?> 
<?php $subject_set = find_all_subjects(); ?> 

すべて問題なく動作しますが、どのように説明できますか?グローバル$接続; inside "functions.php"は実際に動作していますか?

+0

グローバルがどのように機能するかは、コーディングの基本です。 php docsを見てください。 BTW:グローバルから手を引く。 .... –

+0

このスタイルを使用する代わりにOOPを使用する必要があります ** global **を使用すると、関数の外に定義された変数にアクセスすることができます。このドキュメント[link](http://php.net/manual/en/language.variables.scope.php)を確認してください。 –

答えて

0

あなたはその行

<?php require_once("db_connection.php"); ?> 

を書くとき、次にそれは、そのファイル内db_connection.phpファイル書き込みのように振る舞います。

その後、他のライン、あなたは

0

あなたが含まれたり必要とPHPファイル内の..あなたがそうmain.phpファイル その作業罰金でfunction.phpファイルを書き込むようにそれが動作します、その後

<?php require_once("functions.php"); ?> 

書きますウェブページでは、コードと機能を別々のファイルに分割しても、別々のファイルのすべてのコードを含むファイルが1つだけ含まれていれば、基本的に同じです。

"db_connection.php"で宣言/作成する変数は、両方のファイルを同じページに含めると、 "functions.php"で作成した場合と同じように機能します。

これは、別のファイルを使用する場合、変数、関数などの名前付けに注意する必要があるためです。

関連する問題