PHP将数组转换为所需的字符串格式

时间:2014-07-16 05:25:43

标签: php sql

我有以下格式的一系列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)

5 个答案:

答案 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);