【问题标题】:php foreach statement to insert data into sql only inserting last linephp foreach 语句将数据插入 sql 仅插入最后一行
【发布时间】:2016-10-18 14:21:26
【问题描述】:

我正在尝试使用 PHP 中的 foreach 语句将数组中的数据插入 SQL 数据库。数组可以有 40 到 80 行数据。我正在使用以下代码:

foreach ($racelap as $lap){
     $sql = "insert into laps (RaceID,Lap,time,Temp,Humidity) ";
     $sql .= "values ($RaceID,'$lap[0]','$lap[1]',$lap[2],'$lap[3]')";
    mysql_query($sql); 
}

代码没有给我错误,但它只添加了最后一行数据,而忽略了所有其他数据。

解决方案可能很简单,可惜我自己找不到。

【问题讨论】:

  • 你不应该使用任何 mysql_*-functions。它们自 php 5.5 起已被弃用,并在 php 7.0 中完全删除
  • 您还应该实际检查错误
  • 不知道 $racelap 数组中的实际内容,或者您​​的表是如何定义的以及代码看起来没问题的事实,您希望猜测多少
  • 首先在你的文件顶部添加一些error reporting测试时在你打开PHP标签之后,例如<?php error_reporting(E_ALL); ini_set('display_errors', 1);,看看它是否产生任何东西.
  • 如果这没有帮助,echo $sql; 在 foreach 循环中看看是否能给你任何线索 调试 101

标签: php sql arrays foreach


【解决方案1】:

试试这个, 使用单个 SQL INSERT 语句插入多行查询 像这样:

INSERT INTO MyTable ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )

代码

$sql = "insert into laps (RaceID,Lap,time,Temp,Humidity) values  ";
foreach ($racelap as $lap){
     $sql .= "($RaceID,'$lap[0]','$lap[1]',$lap[2],'$lap[3]') ,";
}
$sql =rtrim($sql,",");
mysql_query($sql); 

【讨论】:

    【解决方案2】:

    现在,mysql 已弃用。面糊你可以使用mysqli。尝试使用mysql 波纹管代码:

    $sql = "insert into laps (RaceID,Lap,time,Temp,Humidity) values ";
    
    foreach ($racelap as $lap){
        $sql .= "($RaceID,'$lap[0]','$lap[1]',$lap[2],'$lap[3]'), "; 
        if(!next($racelap)) {
            $sql .= "($RaceID,'$lap[0]','$lap[1]',$lap[2],'$lap[3]')"; 
        }
    }
    mysql_query($sql);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多