【问题标题】:PHP CSV Insert using prepared statement [closed]使用准备好的语句插入 PHP CSV [关闭]
【发布时间】:2018-01-07 19:26:45
【问题描述】:

我正在尝试将 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++;
    }
?>

此代码不起作用,如果此代码中有任何问题,请帮助解决,因为我是准备好的语句和 PDO 的新手。

【问题讨论】:

  • 你绑定了两次 val1 和零次 val2
  • @jeprubio,嗨,谢谢,即使我试过 $stmt->bindParam(':val1', $field1); $stmt->bindParam(':val2', $field2);它不起作用。
  • 您是否尝试将 sysdate 放入时间戳列?也许 systimestamp 会是一个更好的主意。
  • 您应该在问题中添加错误 - 稍后不要作为评论。您应该检查任何 I/O 上的错误(fgetcsv 和 stmt->execute)。如果您添加了错误检查,那么您将能够看到您传递给语句的值并将这些值与表定义和任何适用的约束一起包含在您的问题中。
  • @davidb 我认为这是您正在寻找的解决方案stackoverflow.com/questions/35241870/…

标签: php csv


【解决方案1】:

我尝试了类似的方法,只有一条记录,在时间戳列中插入 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);
  }
?>

还有一件事:你的桌子上没有触发器?

【讨论】:

  • 感谢您的时间和努力,帮助很大
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 2015-03-02
  • 2016-03-07
  • 1970-01-01
  • 2014-09-16
相关资源
最近更新 更多