2011-12-28 103 views
1

我从窗体上传了一个csv。我试图使用mysql_affected_rows来确定它是否成功。数据上传到表中,但mysql_affected_rows不计算为真。请帮助:插入多个记录到mysql和mysql_affected_rows()

<?php 
session_start(); 
$idnewtest1 = $_GET['idnewtest1']; 

     move_uploaded_file($_FILES["fileCSV"]["tmp_name"], 
     "quiz/" . $_FILES["fileCSV"]["name"]); 

    $objConnect = mysql_connect("localhost","root","...") or die(mysql_error()); // Conect to MySQL 
    $objDB = mysql_select_db("testing"); 

$objCSV = fopen("quiz/".$_FILES["fileCSV"]["name"], "r"); 
fgetcsv($objCSV, 1000, ","); // skip first row 

     while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) { 
     $strSQL = "INSERT INTO ex_question1 "; 
     $strSQL .="(id,test_name,q_nr,....) "; 
     $strSQL .="VALUES "; 
     $strSQL .="('0','".$idnewtest1."','".$objArr[0]."'....) "; 
     $objQuery = mysql_query($strSQL); 
    } 
    fclose($objCSV); 

if (mysql_affected_rows() > 1) { 
echo "Import completed."; 
}  

?> 

回答

2

有多种交易是通过处理,同时循环,使多重插入语句, 每个返回1至mysql_affected_row(),

和第二件事你使用的功能了一边循环和条件> 1永不满足BCZ每次mysql_affected_row()的返回1 ...

2

务必:

 

<?php 
$affectedRows = 0; 
    while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) { 
     $strSQL = "INSERT INTO ex_question1 "; 
     $strSQL .="(id,test_name,q_nr,....) "; 
     $strSQL .="VALUES "; 
     $strSQL .="('0','".$idnewtest1."','".$objArr[0]."'....) "; 
     $objQuery = mysql_query($strSQL); 
     $affectedRows +=mysql_affected_rows(); 
    } 
    fclose($objCSV); 

if ($affectedRows > 1) { 
echo "Import completed."; 
}  
?> 
 
1

您可以使用此INSERT查询

INSERT INTO ex_question1 
(id,test_name,q_nr,....) 
VALUES (...............), 
(...............), 
(...............), 
(...............); 

这将插入一个所有行去