$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);
}
答案 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的所有信息。