Php 如何检查阵列中是否存在数据库

Php 如何检查阵列中是否存在数据库,php,mysql,Php,Mysql,我尝试在插入数据库之前检查数据库行中是否存在值 这是我的密码。如果数据库中有数组值,我想签入数组值。如果存在“kullanici”和“totoid”,则不要插入数据库 if($sonuc == 1) { $arr[] = '( "' . $mac->kullanici . '", "5",

我尝试在插入数据库之前检查数据库行中是否存在值

这是我的密码。如果数据库中有数组值,我想签入数组值。如果存在“kullanici”和“totoid”,则不要插入数据库

            if($sonuc == 1) {
                $arr[] = '(
                                "' . $mac->kullanici . '",
                                "5",
                                "' . $mac->totoid  . '"
                        )';
            }
            if($sonuc == 2) {
                $arr[] = '(
                                "' . $mac->kullanici . '",
                                "10",
                                "' . $mac->totoid  . '"
                        )';
            }
            if($sonuc == 3) {
                $arr[] = '(
                                "' . $mac->kullanici . '",
                                "15",
                                "' . $mac->totoid  . '"
                        )';
            }
            if($sonuc == 4) {
                $arr[] = '(
                                "' . $mac->kullanici . '",
                                "20",
                                "' . $mac->totoid  . '"
                        )';
            }
            if($sonuc == 5) {
                $arr[] = '(
                                "' . $mac->kullanici . '",
                                "25",
                                "' . $mac->totoid  . '"
                        )';
            }
        }

        $sql = $this->db->query("INSERT INTO kazananlar (kullanici, kazanci, totoid) VALUES " . implode(',', $arr));
我建议使用。这种技术的优点是可以使用单个查询,因此不必担心可能的竞争条件

首先在列
kullanici
tototoid
上创建唯一约束:

create unique index idx_kazananlar on kazananlar(kullanici, totoid);
然后,您可以执行以下操作:

insert into kazananlar (kullanici, kazanci, totoid) 
values (...)
on duplicate key update kullanici = values(kullanici)

数据库检查是否已经存在具有相同
kullanici
tototoid
的行;如果是,则重复键上的
子句将执行禁止操作。

像在值中一样内爆。我不想更新。bcs稍后,我将使用新TOTOID向用户添加新点。有可能吗?@Kritik:它会更新到一个已经存在的值。所以这实际上是一个no-op(它不会改变现有的行)。我如何将其写入到值?检查totoid和kullanici以后是否在duplicate上运行。@Kritik:查询就是这样做的。您可以阅读我在答案中链接的文档,并在应用程序中尝试查询;检查与您的MariaDB服务器版本相对应的手册,了解在第25行插入kazananlar(kullanici、kazanci、totoid)值(“s3dfsaa”、“25”、“47196”)、((“asdasda”、“25”、“47196”)、(“awdaw”、“15”、“47196”)、(“32434234”、“20”、“47196”)、(“admin”、“5”)中使用的正确语法,“47196”),(“aslan Akbey”,“10”,“47196”)在重复键上更新集kullanici=values(kullanici),其给出的类似于此错误。