如何将数组插入数据库

时间:2015-07-09 09:40:08

标签: php

$rate=[10,20,40,50,70];

如何在下面的查询中插入值?

$sql="INSERT INTO rental(day_1,day_3,day_7,day_15,day_30)
      VALUES('{$rate[0]}','{$rate[1]}', '{$rate[2]}','{$rate[3]}','{$rate[4]}')";

$stmt =connection::$pdo->prepare($sql);
$stmt->execute();

我在下面尝试过,但它会在记录的所有列中插入相同的值,并为每个新值创建新记录:

foreach($rate as $key->$value)
{  
    $sql="INSERT INTO rental(day_1,day_3,day_7,day_15,day_30)
          VALUES('{$value}','{$value}', '{$value}','{$value}','{$value}')";

    $stmt =connection::$pdo->prepare($sql);
    $stmt->execute();

根据给出的答案编辑

public function rentalRate()
    {

$rate = implode("','",$this->rate);
$sql = "INSERT INTO rental(day_1,day_3,day_7,day_15,day_30)VALUES('$rate')";
$stmt =connection::$pdo->prepare($sql);
        $stmt->execute();
        unset($rate);
    }

4 个答案:

答案 0 :(得分:5)

只需使用implode即可

$rate = [10,20,40,50,70];
$rate = implode("','",$rate);
$sql = "INSERT INTO rental(day_1,day_3,day_7,day_15,day_30)VALUES('$rate')";
echo $sql;

答案 1 :(得分:0)

Foreach在这种情况下没用,因为你想在一个查询中集成多个数组元素,而你没有多维数组。只需使用您的第一个查询:

$sql = "INSERT INTO rental(day_1,day_3,day_7,day_15,day_30)VALUES('{$rate[0]}','{$rate[1]}', '{$rate[2]}','{$rate[3]}','{$rate[4]}')";

而且 - 如果你真的想使用foreach:

$sql = "INSERT INTO rental(day_1,day_3,day_7,day_15,day_30)VALUES(";
foreach($rate as $value)
    $sql .= "'$value', ";
$sql = rtrim($sql, ", ") . ")";

答案 2 :(得分:0)

只是简单(注意implode只适用于整数,不需要变量)

 $rate=[10,20,40,50,70];
 $r_sql = '';
 foreach($rate as $r) {
     $r_sql.="'$r',";
 }
 $r_sql = trim($r_sql,',');
 $sql="INSERT INTO rental(day_1,day_3,day_7,day_15,day_30)VALUES(".$r_sql.")";

答案 3 :(得分:0)

通常将数组插入到不同的表中,并且所有工具都面向此。通常最好不要对抗工具,否则可能会遇到不可预见的问题。

如果我们添加

table rental_day(id(int), rental_id(int,fk), rate(money))

然后对于数组中的所有项目,我们只需将该项目插入到rental_day

中的一行中

稍后当我们需要信息时,我们可以像

一样查询它
select * from rental_day d inner join rental r on d.rental_id=r.id where r.id=something

您将在一次查询中获得rental_day和rental的所有信息。