【发布时间】:2017-08-29 18:00:40
【问题描述】:
单击提交按钮时,我在 MySQL 数据库中得到重复的日期,这意味着 CSV 文件中的单行被插入两次并在数据库中获得相同的记录。
我的 php 代码放在这里。
if(isset($_POST['submit'])){
if( $_FILES['file']['name']){
$filename = explode('.',$_FILES['file']['name']);
if ($filename[1] == 'csv'){
$handle = fopen($_FILES['file']['tmp_name'],"r");
if($_POST['dataType']=='aType'){
while ($data = fgetcsv($handle)){
$item0 = mysqli_real_escape_string($con,$data[0]);
$item1 = mysqli_real_escape_string($con,$data[1]);
$item2 = mysqli_real_escape_string($con,$data[2]);
$item3 = mysqli_real_escape_string($con,$data[3]);
$sql = "insert into `table_XX`(`Column_A`,`Column_B`,`Column_C`,`Column_D`) VALUES ('$item0','$item1','$item2','$item3')";
mysqli_query($con,$sql);
}
if(!(mysqli_query($con,$sql))) echo "something is wrong!";
fclose($handle);
}
}
}
}
我的 Html 代码放在这里。
<form method="post" action="import.php" enctype="multipart/form-data">
<select name="dataType" class="form-control">
<option selected="selected">pls select data</option>
<option>aType</option>
</select>
<input type="file" name="file">
<input type="submit" name="submit" value="submit">
</form>
我的代码有什么问题?谢谢。
编辑:
后来才知道是这行代码导致了这个错误。
if(!(mysqli_query($con,$sql))) echo "something is wrong!"
但是,使用这样的代码来检查我们的查询是一个坏习惯吗?
if(mysqli_query($con,$sql))
顺便说一句,我怎样才能使用数组来存储值来自
mysqli_real_escape_string
而不是使用这个 x4
$item0 = mysqli_real_escape_string($con,$data[0]);
$item1 = mysqli_real_escape_string($con,$data[1]);
$item2 = mysqli_real_escape_string($con,$data[2]);
$item3 = mysqli_real_escape_string($con,$data[3]);
【问题讨论】:
-
你确定你的php代码没有被调用两次吗?
-
好吧,我刚刚学习了一点关于文件的php代码,所以可能有很多错误,但我找不到它们。@Fabian Picone
-
你的代码在函数中吗?也许该函数被调用了两次。你能从你的代码中展示更多吗?
-
emm,其实我发现了这个if(!(mysqli_query($con,$sql))) echo "something is wrong!"。这段代码就在 fclose($handle) 之前 ..可能这就是 mysqli_query 被调用两次的原因@Fabian Picone
-
你能告诉我如何使用数组来存储来自 mysqli_real_escape_string 的值,我知道我可以使用循环来处理它,但一次又一次失败,这太令人沮丧了。@Fabian Picone