Php 进入这个数组并构建SQL语句的最佳方法
我有一个数组结果:Php 进入这个数组并构建SQL语句的最佳方法,php,algorithm,php-5.3,Php,Algorithm,Php 5.3,我有一个数组结果: Array ( [homeclub] => Array ( [0] => MAGA [1] => AGUI [2] => BRAV [3] => TIBU ) [homeclub_annotation] => Array ( [0] => 3
Array
(
[homeclub] => Array
(
[0] => MAGA
[1] => AGUI
[2] => BRAV
[3] => TIBU
)
[homeclub_annotation] => Array
(
[0] => 3
[1] => 11
[2] => 0
[3] => 8
)
[game_inning] => Array
(
[0] => 9 inn
[1] => 10 inn
[2] => 1 inn
[3] => 10 inn
)
[visitor] => Array
(
[0] => CARI
[1] => LEON
[2] => TIGR
[3] => CARD
)
[visitor_annotation] => Array
(
[0] => 2
[1] => 10
[2] =>
[3] => 10
)
[status] => Array
(
[0] => FIN
[1] => FIN
[2] => SUSP
[3] => FIN
)
)
我需要构建一个这样的句子(以每个子数组的位置0为例):
如何获得每个子阵列的正确位置?注意,要构建的句子从子数组和相同位置获取值,我应该使用foreach还是for?有什么帮助吗?您首先需要构建一个简单的数组来处理sql insert:
$youArrDefinition = array(..blah blah..);
$rowsToInsert = array();
$rowsToInsert = array();
foreach ( $youArrDefinition as $keyCol => $groupCols ) {
$i = 0;
foreach( $groupCols as $colVal ) {
$rowsToInsert[$i][$keyCol] = $colVal;
$i++;
}
这应该给你一个更好的数组来操作,比如:
array(
array(
'homeclub' => 'blah',
'homeclub_annotation' => 'blah'
// blah blah rest array
),
array(
'homeclub' => 'blah2',
'homeclub_annotation' => 'blah2'
// blah2 blah2 rest array2
),
// rest of your array
);
这里有一个使用这个
<?php
$arr = Array
(
'homeclub' => Array
(
0 => 'MAGA',
1 => 'AGUI',
2 => 'BRAV',
3 => 'TIBU',
),
'homeclub_annotation' => Array
(
0 => 3,
1 => 11,
2 => 0,
3 => 8,
),
'game_inning' => Array
(
0 => '9 inn',
1 => '10 inn',
2 => '1 inn',
3 => '10 inn',
),
'visitor' => Array
(
0 => 'CARI',
1 => 'LEON',
2 => 'TIGR',
3 => 'CARD',
),
'visitor_annotation' => Array
(
0 => 2,
1 => 10,
2 => 12,
3 => 10,
),
'status' => Array
(
0 => 'FIN',
1 => 'FIN',
2 => 'SUSP',
3 => 'FIN',
)
);
for($int = 0; $int < count($arr['homeclub']); $int++){
$query = 'INSERT INTO tbl_games (teamA, teamA_annotation, teamB, teamB_annotation, game_date, game_status, game_time, game_place) VALUES(';
foreach($arr AS $key => $val){
$query .= (is_integer($val[$int])) ? $val[$int] . ', ' : '\'' . stripslashes($val[$int]) . '\', ';
}
$query .= 'NOW(), NULL, NULL);';
echo $query; // Complete query string, run this with your chosen DB handler.
}
?>
将上述回音保留在适当位置,您将获得以下
插入tbl_游戏(团队A、团队A_注释、团队B、,
团队注释、游戏日期、游戏状态、游戏时间、游戏地点)
值('MAGA',3',9 inn',CARI',2',FIN',NOW(),NULL,NULL)
插入tbl_游戏(团队A、团队A_注释、团队B、,
团队注释、游戏日期、游戏状态、游戏时间、游戏地点)
值('AGUI',11',10 inn','LEON',10',FIN',NOW(),NULL,NULL)
插入tbl_游戏(团队A、团队A_注释、团队B、,
团队注释、游戏日期、游戏状态、游戏时间、游戏地点)
值('BRAV',0',1 inn','TIGR',12',SUSP',NOW(),NULL,NULL)
插入tbl_游戏(团队A、团队A_注释、团队B、,
团队注释、游戏日期、游戏状态、游戏时间、游戏地点)
值('TIBU',8',10 inn',CARD',10',FIN',NOW(),NULL,NULL)
我得到了一个空数组作为结果,这是真的,但几乎没有自定义项。。所以我编辑了我的答案。我还做了一个演示->
<?php
$arr = Array
(
'homeclub' => Array
(
0 => 'MAGA',
1 => 'AGUI',
2 => 'BRAV',
3 => 'TIBU',
),
'homeclub_annotation' => Array
(
0 => 3,
1 => 11,
2 => 0,
3 => 8,
),
'game_inning' => Array
(
0 => '9 inn',
1 => '10 inn',
2 => '1 inn',
3 => '10 inn',
),
'visitor' => Array
(
0 => 'CARI',
1 => 'LEON',
2 => 'TIGR',
3 => 'CARD',
),
'visitor_annotation' => Array
(
0 => 2,
1 => 10,
2 => 12,
3 => 10,
),
'status' => Array
(
0 => 'FIN',
1 => 'FIN',
2 => 'SUSP',
3 => 'FIN',
)
);
for($int = 0; $int < count($arr['homeclub']); $int++){
$query = 'INSERT INTO tbl_games (teamA, teamA_annotation, teamB, teamB_annotation, game_date, game_status, game_time, game_place) VALUES(';
foreach($arr AS $key => $val){
$query .= (is_integer($val[$int])) ? $val[$int] . ', ' : '\'' . stripslashes($val[$int]) . '\', ';
}
$query .= 'NOW(), NULL, NULL);';
echo $query; // Complete query string, run this with your chosen DB handler.
}
?>