我无法从数据库中获取数据并在数组中对其进行排序。
这是我目前的代码:
我循环遍历每个引擎以创建具有每个服务器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
答案 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_assoc
(information)
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);