2012-04-08 19 views
1

私はクエリの結果を印刷する方法を学ぼうとしていますが、混乱しています。アレイの印刷方法は?

コンフィグ表:

site_id | site_name | site_description 

1   Test  Testing 

設定:

private $hostname = 'localhost'; 
private $username = 'blah'; 
private $password = 'blah'; 
private $database = 'blah'; 

public function __construct() 
{ 
    $this->connection = new mysqli($this->hostname,$this->username,$this->password,$this->database); 

    if($this->connection->connect_errno) 
    { 
     die('Error: ' . $this->connection->error); 
    } 
} 

public function query($query) 
{ 
    return $this->connection->query($query); 
} 

public function __destruct() 
{ 
    $this->connection->close(); 
} 

コード#1:

public function __construct() 
{ 
    $this->db = new Config; 

    $si = $this->db->query('SELECT * FROM config'); 

    while($site_if = $si->fetch_array()) 
    { 
     $this->site_info[] = $site_if; 
    } 

} 

public function getSiteName() 
{ 
    echo $this->site_info['site_name']; 
} 

これは何も出力しません。

コード#2:

public function __construct() 
{ 
    $this->db = new Config; 

    $si = $this->db->query('SELECT * FROM config'); 

    while($site_if = $si->fetch_array()) 
    { 
     $this->site_name_info = $site_if['site_name']; 
    } 

} 

public function getSiteName() 
{ 
    echo $this->site_name_info; 
} 

これは、情報を出力しますが、それは正しいアプローチですか?コード#1で印刷する方法はありますか?

私がしたいのは、エコーサイト名です。サイト名は1つだけです。

+1

あなたのクラスに関する詳しい情報を提供する必要があります。そうしないと、推測ゲームになります。 – worenga

答えて

0

例1では、$this->site_infoに配列の配列が含まれています。各行の名前を印刷し、内容をループする

print_r($this->site_info); 

:単純に内容を表示するには

foreach ($this->site_info as $row){ 
    echo $row['site_name']; 
} 
1

コンフィグテーブルについての詳細情報がなければ唯一私が提案することができると思い設計のようなものですその:

while($site_if = $si->fetch_array()) 
{ 
    $this->site_info[$site_if["NAME_COLUMN_NAME"]] = $site_if["VALUE_COLUMN_NAME"]; 
} 

NAME_COLUMN_NAMEVALUE_COLUMN_NAMEあなたのテーブルのデザインから列名に置き換えする必要があります。

その後、$this->site_infoの配列からカスタム設定パラメータを取得できます(例:

public function getSiteName() 
{ 
    echo $this->site_info['site_name']; 
}