数组还是Assoc?

时间:2010-11-21 17:26:51

标签: php mysql arrays associative-array

我正在尝试将MySQL表中的数据存储到PHP数组变量中。

目前,我有这个:

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

数据库方案是这样的:

property value
online     1
autoupd    1
setting    1

我应该如何编写上面的代码,以便我可以使用数据中的属性值,即

$sysconfig['online']会返回“1”吗?

var_dump($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" }

print_r($sysconfig)产生此

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

由于

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

你正在使用的课程是什么样的?我通常建议使用类似的东西:

$sysconfig = mysql_fetch_assoc($row);

将返回该行的数组。你的$ db类有一个方法吗?如果您执行以下操作会发生什么:

print_r($sysconfig);

您应该看到返回数组的细分,它将突出显示您可以使用哪些方法来访问其中的数据。

编辑:

替换此行:

$sysconfig = $row->fetch_array();

使用:

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

然后,您应该可以根据需要访问结果。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

$row = $db->query("SELECT * FROM settings");
while($data = $row->fetch_array())
   $sysconfig[$data['property']] = $data['value'];