如何获取一行数据并将其存储在数组中?

时间:2012-07-25 23:17:44

标签: php mysql

我无法从数据库中获取数据并在数组中对其进行排序。

这是我目前的代码:

我循环遍历每个引擎以创建具有每个服务器ID的排序数组。

for($i=0; $i <= $servers_default_engines_count; $i++){

        //get all servers with this engine type, and get how many
        $query = $db->query("SELECT `id` FROM `cgshop_servers` WHERE `server_engine` = $i");
        $server_id = mysql_fetch_row($query);

        $server[$i] = array();  
        array_push($server[$i], $server_id); 

    };

mysql_fetch_row的结果:

    [0] => Array
        (
            [0] => Array
                (
                    [0] => 2
                )
        )
    [1] => Array
        (
            [0] => Array
                (
                    [0] => 1
                )
        )
)

也:

[0] => Array
        (
        )

    [1] => Array
        (
        )

    [2] => Array
        (
            [0] => 1
        )

但我希望像这样返回: ()出于解释原因。

Array(
   [0] (engine1) => Array(

      [0](server1) => 2 (serverid)
   )
   [1(engine2)] => Array(

      [0](server1) => 1 (serverid)
      [1](server2) => 3 (serverid)
   )
)

这是mysql表中的当前数据: cgshop_servers:

id   server_name   server_ip    serevr_port    server_engine    source_engine
1    test1         195.62.14.65 15464          1                1
2    test2         195.62.14.63 15464          0                0
3    test3         195.64.14.62 15465          1                1

2 个答案:

答案 0 :(得分:0)

你错误地提取它,因为你说你正在使用预备语句,下面是更新后的代码,你可以使用。

$server = array();
for($i=0; $i <= $servers_default_engines_count; $i++){
    //get all servers with this engine type, and get how many
    $sth = $db->prepare("SELECT `id` FROM `cgshop_servers` WHERE `server_engine` = ?");
    $sth->bind_param('i', $i);
    $sth->execute();
    $server[$i] = $sth->fetch();
};

或更好的你可以使用一个查询来获取它,而不需要像这样的任何循环。

$totalServerCounts = range(0, $servers_default_engines_count);
$sth = $db->query("SELECT `id` FROM `cgshop_servers` WHERE `server_engine` IN(".implode(', ', $totalServerCounts).")");
$servers = $sth->fetch_all();

答案 1 :(得分:0)

您是否尝试过使用mysql_fetch_associnformation

  

mysql_fetch_assoc - 将结果行作为关联数组获取


使用示例

 $mysql_query = mysql_query("SELECT * FROM `cgshop_servers` WHERE `server_engine` = ?", $i);
 $my_array = mysql_fetch_assoc($mysql_query);
 print_r($my_array);