Php mysql表中仍然有重复的值

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

我已经在web上听取了关于防止将重复值保存到mysql表的建议,但它仍然保存它,我已经放置了echo语句和exit,以确保不会发生这种情况,但它仍然存在。以下是我根据自己的偏好使用和编辑的代码:

$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语句谢谢您的建议,我将根据您的评论对其进行更改。