我有以下格式的一系列ID:
Array
(
[0] => 5
[1] => 9
[2] => 13
)
并拥有日期变量$date = '16/07/14';
我必须以下面的格式构建一个SQL查询,以便我可以在单个insert语句中插入多行。
INSERT INTO `attendances` (student_id, date) values (5,$date), (9,$date), (13,$date);
那么如何将id数组和日期变量转换为字符串格式,通过它我可以得到(5,$date), (9,$date), (13,$date)
。
答案 0 :(得分:1)
我认为你不需要修改数组结构,在生成SQL时迭代遍历数组应该可以做到这一点:
$array = array(5, 9, 3);
$date = '16/07/14';
$comma = '';
$sql = 'INSERT INTO `attendances` (student_id, date) VALUES';
foreach ($array as $val) {
$sql .= $comma . '(' . $val . ', "' . $date . '")';
$comma = ', ';
}
echo $sql;
如果必须修改数组结构,请尝试array_walk()
:
array_walk($array, function(&$item, $key) use ($date) {
$item = array($item, $date);
});
print_r($array);
上面的代码将输出:
Array
(
[0] => Array
(
[0] => 5
[1] => 16/07/14
)
[1] => Array
(
[0] => 9
[1] => 16/07/14
)
[2] => Array
(
[0] => 3
[1] => 16/07/14
)
)
答案 1 :(得分:0)
您可以先将其连接到变量然后运行SQL查询,如下所示:
$delimiter = ''
$sql = 'INSERT INTO `attendances` (student_id, date) VALUES';
foreach ($arr as &$value) {
$sql .= $delimiter . "(". $value .",". $date .")";
$delimiter = ',';
}
修改强> 对不起,我误解了你的问题,只是编辑了我的答案..
答案 2 :(得分:0)
试试这个: -
<?php
$a = array(5, 9, 3);
$date = '16/07/14';
foreach($a as $k){
$result .= "(".$k.",'".$date."'),";
}
echo rtrim($result, ",");
?>
答案 3 :(得分:0)
这会对你有所帮助
$sql='INSERT INTO `attendances` (student_id, date) values ';
$count = count($array);
if($count > 0){
$i=1;
foreach ($array as $a){
if($count ==$i){
$sql.=" ($a,$date) ";
}else{
$sql.=" ($a,$date), ";
}
$i++;
}
}
}
答案 4 :(得分:-2)
您可以使用foreach循环多次执行sql查询。所以你的代码将是
foreach($array as $value)
INSERT INTO `attendances` (student_id, date) values ($value,$date);