我正在创建一个PHP文件,允许用户通过HTML表单上传.csv文件。从那里,它将更新数据库。我成功地创建了将.csv发送到PHP的代码。
不,问题不在于列为空。我测试了每一个,它们显示得很好。
这是我得到的错误:
Warning: oci_execute(): ORA-00947: not enough values in <DIRECTORY> on line 43
以下是表单处理程序的源代码:
<?php
if(isset($_POST['numbers']))
{
$file = fopen($_FILES['uploaded']['tmp_name'], 'r');
if($file) {
while (($line = fgetcsv($file)) !== FALSE) {
$csv_array[] = array_combine(range(1, count($line)), array_values($line));
}
}
}
?>
<br>
<?php
require_once("mcl_Oci.php");
$ArrayNumber = 1;
$GF=$csv_array["$ArrayNumber"]["1"];
$CREW_NUMBER=$csv_array["$ArrayNumber"]["2"];
$FOREMAN_NAME=$csv_array["$ArrayNumber"]["3"];
$PHONE_NUMBER=$csv_array["$ArrayNumber"]["4"];
$TYPE=$csv_array["$ArrayNumber"]["5"];
$AVAILABLE=$csv_array["$ArrayNumber"]["6"];
$CONTRACTOR=$csv_array["$ArrayNumber"]["7"];
$SERVICE_CENTER=$csv_array["$ArrayNumber"]["8"];
$COMMENTS = $csv_array["$ArrayNumber"]["9"];
$objConnect = oci_connect("user", "pass", "(description=(address=(protocol=tcp)(host=host.com)(port=1533))(connect_data=(service_name=SID)))");
$strSQL = "INSERT INTO TABLE (GF,
CREW_NUMBER,
FOREMAN_NAME,
PHONE_NUMBER,
TYPE,
AVAILABLE,
CONTRACTOR,
SERVICE_CENTER,
COMMENTS) VALUES ('$GF, $CREW_NUMBER, $FOREMAN_NAME, $PHONE_NUMBER, $TYPE, $AVAILABLE, $CONTRACTOR, $SERVICE_CENTER, $COMMENTS')";
$objParse = oci_parse($objConnect, $strSQL);
$objExecute = oci_execute($objParse); //LINE 43//
?>
我认为你不需要来自表单的来源,但无论如何它都是:
<form name="file" enctype="multipart/form-data" action="update_handler2.php" method="post" >
<u>GF:</u> <input type="file" name="uploaded"br>
<input type="submit" value="Submit">
</form>
答案 0 :(得分:0)
更改此行:
VALUES ('$GF, $CREW_NUMBER, $FOREMAN_NAME, $PHONE_NUMBER, $TYPE, $AVAILABLE, $CONTRACTOR, $SERVICE_CENTER, $COMMENTS')
对此:
VALUES ('$GF', '$CREW_NUMBER', '$FOREMAN_NAME', '$PHONE_NUMBER', '$TYPE', '$AVAILABLE', '$CONTRACTOR', '$SERVICE_CENTER', '$COMMENTS')
我不熟悉PHP,但这看起来像是一个巨大的SQL注入漏洞。我假设有一种方法可以使用绑定变量。