使用准备好的语句插入PHP CSV

使用准备好的语句插入PHP CSV,php,csv,Php,Csv,我正在尝试将CSV数据插入数据库,我已经在下面尝试过了 <?php $stmt = $con->prepare('INSERT INTO test (field1, field2, load_time) VALUES (:val1, :val2, sysdate)'); $i=0; while (($data = fgetcsv($source)) !== FALSE) { if($i!=0) { $field1=

我正在尝试将CSV数据插入数据库,我已经在下面尝试过了

<?php 
    $stmt = $con->prepare('INSERT INTO test (field1, field2, load_time) VALUES (:val1, :val2, sysdate)');
    $i=0;
    while (($data = fgetcsv($source)) !== FALSE) {  
        if($i!=0) {
            $field1=$data[0];
            $field2=$data[1];
            $stmt->bindParam(':val1', $field1);
            $stmt->bindParam(':val2', $field2);
            $stmt->execute();
        }
        $i++;
    }
?>


此代码不起作用,请帮助修复此代码中的任何问题,因为我是prepared语句和PDO的新手。

我尝试了类似的方法,仅一条记录,在时间戳列中插入sysdate,但运行时没有问题

<?php
  $con = oci_connect(
     "admdba","admdba",
     "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ghp-amdphIIX4B.ghp.be)"
     . "(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=GHPORA)(SID=GHPORA)))");
  if ($con) {
    $stmt = oci_parse(
       $con,
       'INSERT INTO test (field1, field2, load_time)'
       . ' VALUES (:val1, :val2, sysdate)');
    $field1='amehoela';
    $field2='broodkorst';
    oci_bind_by_name($stmt, ':val1', $field1);
    oci_bind_by_name($stmt, ':val2', $field2);
    oci_execute($stmt);
    print "Access registered<BR/>";
  } else {
    print "Failed to connect <BR/>";
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
  }
?>


还有一件事:您的表上没有触发器?

您绑定了两次val1和零次val2@jeprubio,您好,谢谢,我甚至尝试了$stmt->bindParam(“:val1”,“$field1”)$stmt->bindParam(':val2',$field2);它不起作用。您是否试图将sysdate放入时间戳列中?也许systimestamp会是一个更好的主意。您应该在问题中添加错误,而不是作为以后的评论。您应该检查任何I/O上的错误(fgetcsv和stmt->execute)。如果您添加了错误检查,那么您将能够看到您传递给语句的值,并将这些值连同表定义和任何适用的约束一起包含在您的任务中。@davidb我认为这是您正在寻找的解决方案谢谢您的时间和努力,它帮助很大