任何人都可以告诉我:
我必须上传excel文件并将其所有数据放入数据库,但条件是这样 如果数据库中已存在任何记录,则必须触发更新查询。 否则为新记录触发插入查询。
我正在将数据库中的Roll No与来自excel的Roll No进行比较。它可以与现有数据一起使用,即更新所有现有数据。但它没有插入新数据。请检查以下代码:else if($ num_rows> 0)
请帮助我。
以下是代码:
if($_FILES['excelFile']['name']!="")
{
$fileName=uploadFile($_FILES['excelFile'],array(".xls",".xlsx"),"excel_file");
$data = new Spreadsheet_Excel_Reader();
$data->read('excel_file/'.$fileName);
$ans=mysql_query("SELECT * FROM StudentData");
$num_rows = mysql_num_rows($ans);
for($i=1;$i<=$data->sheets[0]['numRows'];$i++)
{
$rollno=$data->sheets[0]['cells'][$i][1];
$firstname=$data->sheets[0]['cells'][$i][2];
$lastname=$data->sheets[0]['cells'][$i][3];
$mobile=$data->sheets[0]['cells'][$i][4];
$city=$data->sheets[0]['cells'][$i][5];
if($num_rows<=0)
{
echo('Inserting : '.$rollno);
$query="INSERT INTO StudentData(RollNo,FirstName,LastName,MobileNo,City)VALUES('".$rollno."','".$firstname."','".$lastname."','".$mobile."','".$city."')";
mysql_query($query);
}
else if($num_rows>0)
{
while($rows=mysql_fetch_array($ans))
{
if($rollno!=$rows['RollNo'])
{
echo('<p style="color:green">Inserting : '.$rollno.'</p>');
$query="INSERT INTO StudentData(RollNo,FirstName,LastName,MobileNo,City)VALUES('".$rollno."','".$firstname."','".$lastname."','".$mobile."','".$city."')";
mysql_query($query);
mysql_error();
break;
}
else
{
echo('<p style="color:red">Updating Roll:'.$rollno.'and DBR:'.$rows['RollNo'].'</p>');
$query="UPDATE StudentData SET FirstName='".$firstname."',LastName='".$lastname."',MobileNo='".$mobile."',City='".$city."' WHERE RollNo='".$rollno."'";
mysql_query($query);
break;
}
}
}
}
}
答案 0 :(得分:1)
我尝试将所有现有的卷放在一个数组中!
所以我从现有的rollno
创建了一个数组while($rows=mysql_fetch_array($ans))
{
$existing_rollno[]=$rows['RollNo'];
}
然后我使用了这个php函数: -
if (in_array($rollno, $existing_rollno))
然后它就像我想要的那样工作。
答案 1 :(得分:0)
当num_ros&lt; = 0时,insert语句是否有效?如果没有,那么你的insert语句不起作用。另外,我不确定,但在VALUES之前你不需要空间。
答案 2 :(得分:0)
确定。所以你的insert语句没问题。现在检查一下。在语句之后你有回声if($ rollno!= $ rows ['RollNo'])它是否打印任何东西。如果它没有,那么你的if语句是错误的。试试!==而不是!=