2016-02-28 16 views
0

我試圖導入帶有名和姓的.CVS文件。但它只是將它導入到我的數據庫中的一列中。我得到Notice: Undefined offset: 1 in ..insertimportres.php on line 91 那就是$enamn = $filesop[1];這是抱怨。未定義的偏移量導入帶有PHP的Excel/CVS到MySQL

SQL enter image description here

CVS/Excel中

enter image description here

PHP

<?php 
 
\t include ("connection.php"); 
 
\t \t 
 
\t if(isset($_POST["submit"])) 
 
{ 
 
\t $file = $_FILES['file']['tmp_name']; 
 
\t $handle = fopen($file, "r"); 
 
\t $c = 0; 
 
\t while(($filesop = fgetcsv($handle, 1000, ",")) !== false) 
 
\t { 
 
\t \t $fnamn = $filesop[0]; 
 
\t \t $enamn = $filesop[1]; 
 
\t 
 
\t \t 
 
\t \t $sql = mysql_query("INSERT INTO kandidater (fnamn, enamn) VALUES ('$fnamn','$enamn')"); 
 
\t \t $c = $c + 1; 
 
\t } 
 
\t 
 
\t \t if($sql){ 
 
\t \t \t echo "You database has imported successfully"; 
 
\t \t }else{ 
 
\t \t \t echo "Sorry! There is some problem."; 
 
\t \t } 
 
}

+2

上傳的文件的內容是什麼?它看起來像是'''分隔的,而不是分隔的(正如你在'fgetcsv'調用中指定的那樣)。另外,'mysql_ *'函數不推薦使用,使用'mysqli'或'PDO',並查看關於防止sql注入的頂級相關問題 - 名稱中的'''會破壞INSERT查詢。 – Kenney

+0

我想上傳的內容是我添加的CVS/Excel圖片。我把它改成了';',現在把Lastname1移到下一列'enamn',這很好,但是下一個名字不想跳到它自己的列上,而是繼續在'enamn'上。我該怎麼做,以便每個名稱都有自己的專欄? – Fredrik

回答

0

基本上錯誤意味着它試圖獲取索引1的值,但索引不存在。這意味着您的csv中某處沒有第二列的值。爲了避免這樣的錯誤分配變量是這樣的:

$fnamn = isset($filesop[0]) ? $filesop[0] : null; 
$enamn = isset($filesop[1]) ? $filesop[1] : null; 

如果設置了指標,然後它將使用該值,如果不將它設置爲空值。根據您的數據庫列定義(如果您不是null),這可能也會失敗。無論哪種情況,您都可以將null更改爲任何您需要的內容