Как я могу проверить базу данных, если существует из массива - PullRequest
1 голос
/ 16 марта 2020

Я пытаюсь проверить перед вставкой базы данных, есть ли значения в строке базы данных.

это мой код. Я хочу проверить значения массива, если есть в базе данных. если есть "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));

enter image description here

1 Ответ

1 голос
/ 16 марта 2020

Я бы предложил использовать синтаксис insert... on duplicate key . Преимущество этого метода в том, что вы можете использовать один запрос, поэтому вам не нужно беспокоиться о возможных условиях гонки.

Это работает, сначала создав уникальное ограничение для столбцов kullanici и totoid:

create unique index idx_kazananlar on kazananlar(kullanici, totoid);

Затем вы можете сделать:

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

База данных проверяет, существует ли уже строка с такими же kullanici и totoid; если это так, то предложение on duplicate keys выполняет no-op.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...