Задать вопрос
@ikfah012
Не самый умный парень в этом чате

Как проверить повторы в бд и не вносить запись при их нахождении?

Добрый день.
Делаю запись циклом в бд, но возникла потребность в отсеивании повторных ключей (в данном случае s2).
Как правильно написать условие, чтобы при нахождении совпадений в бд внеслись только те строки, в которых совпадений нет?
$stmt = mysqli_prepare($link, "INSERT INTO Users (a1, a2, a3, s1, s2) VALUES (?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssss', $a1, $a2, $a3, $s1, $s2);

$check = mysqli_prepare($link, "SELECT * FROM Users WHERE s2='$s2'");
mysqli_stmt_bind_param($check, s, $s2);

foreach($json['object'] as $item) {
  $a1 = $item['a1'];
  $a2 = $item['a2'];
  $a3 = $item['a3'];
  $s1 = $item['s1'];
  $s2 = $item['s2'];
  mysqli_stmt_execute($check);
  if($check){
    ...
  }
  else {
  mysqli_stmt_execute($stmt);
  }
}
  mysqli_stmt_close($stmt);
  mysqli_close($link);
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
Почитай про конструкцию: INSERT IGNORE ..

$stmt = mysqli_prepare($link, "INSERT IGNORE INTO Users (a1, a2, a3, s1, s2) VALUES (?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssss', $a1, $a2, $a3, $s1, $s2);

foreach($json['object'] as $item) {
  $a1 = $item['a1'];
  $a2 = $item['a2'];
  $a3 = $item['a3'];
  $s1 = $item['s1'];
  $s2 = $item['s2'];
  mysqli_stmt_execute($stmt);
}
  mysqli_stmt_close($stmt);
  mysqli_close($link);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы