2010-11-21 8 views
0

MySQLテーブルのデータをPHPの配列変数に格納しようとしています。データベーススキーマのようなある配列またはAssoc?

$row = $db->query("SELECT * FROM settings"); 
$sysconfig = $row->fetch_array(); 

::など

property value 
online  1 
autoupd 1 
setting 1 

私はなるように、私は、上記のコードを記述する必要がありますどのように

現在、私はこれを持っていますデータ内のプロパティの値を使用できます。つまり、

$sysconfig['online']は " 1 "?

var_dump($sysconfig)print_r($sysconfig)この

array(6) { [0]=> string(6) "online" ["property"]=> string(6) "online" [1]=> string(1) "1" ["propertyid"]=> string(1) "1" [2]=> string(1) "1" ["value"]=> string(1) "1" } 

をもたらすこの

Array ([0] => online [property] => online [1] => 1 [propertyid] => 1 [2] => 1 [value] => 1) 

おかげ

+1

あの...あなたはすでにそれを書いた正確に方法はありますか? :) –

+0

私はこれを得る:未定義のインデックス:PHPの通知としてオンライン。 – bear

+0

あなたの質問を 'var_dump($ sysconfig)'で更新する – ajreal

答えて

2

fetch_array戻り連想と列挙配列の両方をもたらします。 MYSQL_ASSOCパラメータを追加することによってassoc配列のみを返すように指定することができます。またはfetch_assocメソッドを使用することができます。

UPD:あなたとあなたの選択クエリを書き直す必要があるので、あなたは、唯一の「プロパティ」と「値」の列を持っているあなたのスキームについてはが参加するか、またはこのようなデータセットを反復処理:

$sysconfig = array(); 
while ($line = $row->fetch_assoc()) 
    $sysconfig[ $line['property'] ] = intval($line['value']); 

//$sysconfig['online'] == 1 
+0

配列としてmysqli_result型のオブジェクトを使用できません – bear

+0

@Shamil:申し訳ありませんが、typoはwhile-loopの$ rowではなく$ lineでなければなりません。 – Andrew

+0

それは動作します:)ありがとう! – bear

2

何をしますかあなたのように見えるクラスですか?私は通常、次のようなものを使用することをお勧めします:

$sysconfig = mysql_fetch_assoc($row); 

これは、その行の配列を返します。あなたの$ dbクラスにはこのためのメソッドがありますか?

print_r($sysconfig); 

はあなたが内のデータにアクセスするために使用できる方法を紹介します返される配列の内訳が表示されます。あなたは次の操作を実行した場合はどうなります。

EDIT:

は、この行を置き換えますと

$sysconfig = $row->fetch_array(); 

while($data = $row->fetch_array()){ 
    $sysconfig[$data['property']] = $data['value']; 
} 

あなたは、あなたが望むような結果にアクセスすることができるはずです。

+0

私は通常のクラスを使用しています: '$ db = new mysqli(接続の詳細、tablename) ' – bear

+0

print_r($ sysconfig)またはvar_dump($ sysconfig)の結果を投稿できますか? – a1phanumeric

+0

質問に 'print_r'を追加しました。 – bear

1
$result = $db->query("SELECT * FROM settings"); 

while ($row = mysql_fetch_assoc($result)) { 
    echo $row["online"]; 
    echo $row["autopd"]; 
    echo $row["setting"]; 
    // etc. 
} 
+0

エコーする必要はありません。それでも変数配列は保存されません。 – bear

+0

エコーは単なる使用例でした。あなたは "可変配列は保存していません"という意味を詳しく説明できますか? whileループに入っていますか?そうでなければ、クエリは結果を返していません。それが見た目に入っているなら、おそらくprint_r($ row)を使うことができます。ループの中。 –

1
$row = $db->query("SELECT * FROM settings"); 
while($data = $row->fetch_array()) 
    $sysconfig[$data['property']] = $data['value']; 
関連する問題