csv到mysql使用php没有插入数据

时间:2012-10-17 10:03:37

标签: php mysql insert

我正在尝试使用php将csv的联系人数据上传到mysql数据库phbook, 但当我通过phpmyadmin检查或打印数据库的数据..我什么都没看到,或者说表是空的,

我使用的代码如下;

    <?php
    /* conenction to DB */

    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }

    mysql_select_db("phbook", $con);

    /* connection ends*/

    if ( isset( $_FILES['userfile'] ) )
    {
      $csv_file = $_FILES['userfile']['tmp_name'];

      if ( ! is_file( $csv_file ) )
        exit('File not found.');

      $sql = '';

      if (($handle = fopen( $csv_file, "r")) !== FALSE)
      {
          while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
          {
              $sql .= "INSERT INTO `contact` SET
                `fname` = '$data[0]',
                `lname` = '$data[1]',
                `phone` = '$data[2]',
                `mob` = '$data[3]',
                `email` = '$data[4]';
              ";
          }
          fclose($handle);
      }

      // Insert into database

      //exit( $sql );
      exit( "Complete!" );
    }
    mysql_close($con);
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>CSV to MySQL Via PHP</title>
    </head>
    <body>
    <form enctype="multipart/form-data" method="POST">
      <input name="userfile" type="file">
      <input type="submit" value="Upload">
    </form>
    </body>
    </html>

我使用了代码Import an excel (.csv) into MySQL using PHP code and an HTML form

2 个答案:

答案 0 :(得分:3)

您需要调用mysql_query来执行查询。现在,您只能将查询表示为字符串($sql),并且不做任何进一步的操作。只需将此字符串作为参数传递,例如:

$result = mysql_query($sql);

您可能还想处理发生的任何错误。例如(来自PHP手册):

if (!$result) {
    die('Invalid query: ' . mysql_error());
}

有关详细信息,请参阅PHP manual on mysql_query

答案 1 :(得分:3)

对于像我这样寻求解决方案的其他人的帮助,请阅读并按照,

我创建了一个名为 csv 的数据库,以及名为 test 的表,其中4个字段为 id < em>(自动增量和主要) ,first_name,last_name,电子邮件。我创建了一个csv文件并将其命名为 upload.csv (无论你的名字是什么),其中3列中有数百个人的数据,如名字,< strong>姓氏和电子邮件地址示例:

willie walker willie@example.com
david cotter david@sometest.com
John Painer john@domain.com
....... .......... ......................
....... .......... ......................

现在,创建一个新的php文件import_csv_file.php(无论你怎么命名)并粘贴下面的代码,保存并在你的web服务器下运行..上传我们创建的csv文件,看看.. IT WORKS

    <?php

    $con = mysql_connect("localhost","root","") or die (mysql_error());

    mysql_select_db('csv', $con);

        if(isset($_POST['submit']))
        {
            $file = $_FILES['file']['tmp_name'];
            $handle = fopen($file,"r");
            while(($fileop = fgetcsv($handle,1000,",")) !==false)
            {

                $f = $fileop[0];
                $l = $fileop[1];
                $e = $fileop[2];
                $sql= mysql_query("INSERT INTO test (first_name,last_name,email) VALUES ('$f','$l','$e')");
            }
            if($sql)
            {
                echo "data uploaded successfully";
            }
        }

    ?>

    <body>
    <form action="" enctype="multipart/form-data" method="post">
      <input type="file" name="file" />
      <br />
      <input type="submit" value="Submit" name="submit"/>
    </form>
    </body>
    </html>