PHP通过foreach循环仅将10行插入Mysql

时间:2018-03-12 12:08:00

标签: php mysql foreach

我使用foreach循环将数据插入到我的mysql表中时一直插入多行。

foreach($event as $booking){

    $startDate = $booking[DTSTART];
    $checkIn = strtotime($startDate[value]);

    $check_in = date("Y-m-d", $checkIn);

    $endDate = $booking[DTEND];
    $checkOut = strtotime($endDate[value]);

    $check_out = date("Y-m-d", $checkOut);

    $booking_source = "Airbnb";

    $source_id = "2";

    $summary = $booking[SUMMARY];

    $description = $booking[DESCRIPTION];

    $uid = $booking[UID];

    $sql = "INSERT INTO test_ics (uid, check_in, check_out, summary, description, source, source_id) VALUES (?,?,?,?,?,?,?)";

    $result = $conn->prepare($sql);
    $result->bind_param('sssssss', $uid, $check_in, $check_out, $summary, $description, $booking_source, $source_id);
    $result->execute();
    echo "<br>";
    echo "$check_in";
}

当我从表description中移除summaryVARCHAR(2550)字段时,代码工作正常并插入所有行,但是当我尝试运行代码时插入descriptionsummary的行(就像上面的代码一样),只插入10行。

由于

  

注意:使用未定义的常量DTSTART - 在第40行的/home/fadipro/public_html/admin/get-airbnb-bookings.php中假定为“DTSTART”

     

注意:使用未定义的常量值 - 在第41行的/home/fadipro/public_html/admin/get-airbnb-bookings.php中假定为'值'

     

注意:使用未定义的常量DTEND - 在第45行的/home/fadipro/public_html/admin/get-airbnb-bookings.php中假设为“DTEND”

     

注意:使用未定义的常量值 - 在第46行的/home/fadipro/public_html/admin/get-airbnb-bookings.php中假定为'value'

     

注意:使用未定义的常量摘要 - 假设第54行/home/fadipro/public_html/admin/get-airbnb-bookings.php中的“摘要”

     

注意:使用未定义的常量描述 - 在第56行的/home/fadipro/public_html/admin/get-airbnb-bookings.php中假定为'DESCRIPTION'

     

注意:使用未定义的常量UID - 在第58行的/home/fadipro/public_html/admin/get-airbnb-bookings.php中假定为“UID”

2 个答案:

答案 0 :(得分:1)

您可以通过将字符串索引放在引号中来删除通知,例如这个$booking['DTSTART']

为了捕获数据库错误,我假设您使用异常来报告它们。此代码捕获并打印异常:

    try {
        $result = $conn->prepare($sql);
        $result->bind_param('sssssss', $uid, $check_in, $check_out, $summary, $description, $booking_source, $source_id);
        $result->execute();
    }
    catch (Exception $e)
    {
        echo $e->getMessage();
    }

我的猜测是它会显示该列太长的数据。

答案 1 :(得分:1)

如果你的字段名称不是常数,那么你必须用单引号

来编写它
foreach($event as $booking){
  $startDate = $booking['DTSTART'];
  $checkIn = strtotime($startDate['value']);

  $check_in = date("Y-m-d", $checkIn);

  $endDate = $booking['DTEND'];
  $checkOut = strtotime($endDate['value']);

  $check_out = date("Y-m-d", $checkOut);

  $booking_source = "Airbnb";

  $source_id = "2";

  $summary = $booking['SUMMARY'];

  $description = $booking['DESCRIPTION'];

  $uid = $booking['UID'];

  $sql = "INSERT INTO test_ics (uid, check_in, check_out, summary, description, source, source_id) VALUES (?,?,?,?,?,?,?)";

  $result = $conn->prepare($sql);
  $result->bind_param('sssssss', $uid, $check_in, $check_out, $summary, $description, $booking_source, $source_id);
  $result->execute();
  echo "<br>";
  echo "$check_in";
}