在php中插入excel上传查询

时间:2014-11-20 09:35:24

标签: php mysql excel

以下是我提取excel表格中的数据的代码,我已提取数据但无法将其插入我的数据库

if($_FILES["file"]["size"] > 0)
    {
        $file = fopen($filename, "r");
        //$sql_data = "SELECT * FROM prod_list_1 ";
        while (($Data = fgetcsv($file, 10000, ",")) !== FALSE)
        {
            echo $Data[0];
            $sql = "INSERT into tbl_userdata ('name','svp_name','mobileno','email') values ('$Data[0]')";

        }
        fclose($file);

但查询无效。 以下是$Data[0] enter image description here

的输出

3 个答案:

答案 0 :(得分:0)

你还必须执行sql:但跳过标题。

尝试:$mysqli->query($sql);或您正在使用的那个,如mysql。

注意:如果您的文件是.csv以“,”单独保存,则此代码将起作用。

 $file = fopen($filename, "r");
    $headers = fgetcsv($file);
    while (($Data = fgetcsv($file, 10000, ",")) !== FALSE){

    /*  echo "<pre>";
        print_r($Data);
        echo "</pre>";  */

    $sql = "INSERT into tbl_userdata ('name','svp_name','mobileno','email') values ('$Data[0]','$Data[1]','$Data[2]','$Data[3]')";
    echo $sql;

    }

答案 1 :(得分:0)

首先,$ Data是您的总数据集,如果您有数据集,则包括标题。 所以你必须使用foreach或for循环遍历$ Data,例如:

$num = count($Data);
for ($c=0; $c < $num; $c++) {
   echo $Data[$c] . "<br />";
}

如果这是excel文件中的标题,则需要跳过第一次迭代。

之后,$ Data [$ c] [0]是名称,$ Data [$ c] [1]是svp_name等。 您的查询将如下所示:

$sql = "INSERT into tbl_userdata ('name','svp_name','mobileno','email') values ('$Data[$c][0]', '$Data[$c][1]', '$Data[$c][2]', '$Data[$c][3]')";

不要忘记实际执行您的查询,您只是定义查询本身而不是执行它。

组合所有内容将在while循环中提供以下代码:

$num = count($Data);
for ($c=0; $c < $num; $c++) {
   $sql = "INSERT into tbl_userdata ('name','svp_name','mobileno','email') values ('$Data[$c][0]', '$Data[$c][1]', '$Data[$c][2]', '$Data[$c][3]')";
   mysql_query($sql); //if you are using mysql
   $mysqli->query($sql); //if you are using mysqli, but then you should use a prepared statement
}

编辑: 查看您提供的excel文件,您需要一个PHPExcel阅读器脚本,因为这不是逗号分隔的csv文件。尝试使用逗号分隔符将excel文件保存为csv文件。

如果您想阅读实际的Excel文件,请尝试使用:
https://phpexcel.codeplex.com/

答案 2 :(得分:0)

将'http://gksfapp.in/backend/19-Nov-2014%2002-31-34%20pm.xls'保存到test.csv。

$host = "localhost";

$user = "root";

$pass = "";

$db_name = "test";

$con = mysql_connect($host, $user, $pass);

if (!$con) {
    die('Could not connect: ' . mysql_error());
}

mysql_select_db($db_name, $con);

$file = fopen('test.csv', "r");

while (($Data = fgetcsv($file, 10000, ",")) !== FALSE) {

    $sql = "INSERT into tbl_userdata (name,svp_name,mobileno,email) values ('$Data[0]','$Data[1]','$Data[2]','$Data[3]')";
    mysql_query($sql);
}

fclose($file);

使用您的数据库凭据和表名更改上述代码。添加适当的异常处理。