php将csv文件上传到mysql表中

时间:2011-12-08 10:17:29

标签: php

我正在尝试创建一个脚本,用户可以将csv文件上传到表中。我从shotdev.com获得了教程,我收到了以下错误,我做错了什么?

* *不允许以下命令:复制

不允许使用以下命令:fopen **

page1.php中

<form action="page2.php" method="post" enctype="multipart/form-data" name="form1">
      <input name="fileCSV" type="file" id="fileCSV">
      <input name="btnSubmit" type="submit" id="btnSubmit" value="Submit">
    </form>

使page2.php

<?
    copy($_FILES["fileCSV"]["tmp_name"],"shotdev/".$_FILES["fileCSV"]["name"]); // Copy/Upload CSV

include 'datalogin.php';

    $objCSV = fopen("shotdev/".$_FILES["fileCSV"]["name"], "r");
    while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
        $strSQL = "INSERT INTO customer ";
        $strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
        $strSQL .="VALUES ";
        $strSQL .="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."' ";
        $strSQL .=",'".$objArr[3]."','".$objArr[4]."','".$objArr[5]."') ";
        $objQuery = mysql_query($strSQL);
    }
    fclose($objCSV);

    echo "Import completed.";
?>

2 个答案:

答案 0 :(得分:1)

看起来您正在以安全模式运行PHP或禁用某些功能。出于安全原因,Web主机通常会禁用文件命令。

您可以与网络主机讨论您的要求 - 如果您提出要求,有些人可以灵活地为您启用这些功能。

否则,您必须在不使用已禁用的文件命令的情况下实现它。一种方法是在HTML表单中创建textarea,您可以在其中粘贴CSV。将它发送到您的PHP脚本,然后运行MySQL导入。

希望有所帮助

答案 1 :(得分:0)

这似乎是托管服务提供商施加的限制(他们似乎已将fopen()copy()放在已禁用的功能列表中,这相当愚蠢),在这种情况下,您可能会除非要求提供者放宽限制,否则不要做任何事情。

但一般情况下,您并未使用move_uploaded_file()正确处理上传的文件。使用它,如手册链接中的示例所示。