使用准备好的语句插入PHP CSV
我正在尝试将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=
<?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我认为这是您正在寻找的解决方案谢谢您的时间和努力,它帮助很大