Php mysql表中仍然有重复的值
我已经在web上听取了关于防止将重复值保存到mysql表的建议,但它仍然保存它,我已经放置了echo语句和exit,以确保不会发生这种情况,但它仍然存在。以下是我根据自己的偏好使用和编辑的代码:Php mysql表中仍然有重复的值,php,mysql,Php,Mysql,我已经在web上听取了关于防止将重复值保存到mysql表的建议,但它仍然保存它,我已经放置了echo语句和exit,以确保不会发生这种情况,但它仍然存在。以下是我根据自己的偏好使用和编辑的代码: $line = array(); $file = fopen("D:/Documents/Documents/LOGS.txt", "r"); while (! feof($file)) { $line[] = fgetcsv($file, 4096); foreach ($line
$line = array();
$file = fopen("D:/Documents/Documents/LOGS.txt", "r");
while (! feof($file))
{
$line[] = fgetcsv($file, 4096);
foreach ($line as $value)
{
$newline = explode(" ", $value[1]);
$date = trim($newline[0]);
$time = trim($newline[1]);
$check = mysqli_query($cxn, "select * from temprec where EmpID = '$value[0]'
and ValidDate = '$date' and ValidTime = '$time'") or die("Couldn't execute
query");
$checkrows = mysqli_num_rows($check);
if ($checkrows > 0) {
echo "data already saved";
exit;
}
else
{
$result = mysqli_query($cxn, "insert ignore into
temprec(EmpID,ValidDate,ValidTime) values('$value[0]','$date','$time')") or
die("Couldn't execute query");
}
}
}
fclose($file);
注意:logs.txt包含来自生物识别机器的数据,并且包含太多重复值。您是否尝试回显您的
“将忽略插入temprec(EmpID、ValidDate、ValidTime)值(“$value[0]”、“$date”、“$time”)或
die(“无法执行查询”
以确保您的查询是否显示了正确的查询?您在检查查询中有一个错误。在字符串中
“从temprec中选择*,其中EmpID='$value[0]'和ValidDate='$date'和ValidTime='$time'”
变量$value[0]仅作为$value分配,您会得到如下查询“从temprec中选择*,其中EmpID='array[0]'和ValidDate='$date'和ValidTime='$time'
使用“{}”应该修复它:
“从temprec中选择*,其中EmpID='${value[0]}'和ValidDate='$date'和ValidTime='$time'”
将唯一索引添加到表中,或者我会编辑它。我认为juergen在那里,你的php脚本在调用它的同一html页面中吗?我已经尝试添加主键和唯一id,但它只是递增,并且仍然使用不同的id保存副本,即使我设置了要检查重复的值。可以吗我已经解决了我的问题,我应该只将时间值设置为唯一的…一条建议,尽可能避免在循环内执行查询。循环中的select语句对查询执行时间的贡献很大。而insert语句可以在循环后执行。只需将数据构造为需要插入的字符串,然后在循环结束时,将其连接到您的insert语句谢谢您的建议,我将根据您的评论对其进行更改。