0

我无法从我的数据库中获取数据并将其排序到一个数组中。

这是我当前的代码:

我正在遍历每个引擎以创建具有每个服务器 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
4

2 回答 2

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();
于 2012-07-25T23:21:08.747 回答
0

您是否尝试过使用mysql_fetch_assoc信息

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);
于 2012-07-26T00:25:22.430 回答