Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sprawdź, czy wszystkie wartości w tablicy istnieją w kolumnie bazy danych

Bardziej wydajne byłoby zbudowanie instrukcji za pomocą WHERE IN aby uzyskać pasujące wiadomości e-mail, a następnie porównać otrzymane tablice. Możesz użyć array_diff() aby uzyskać różnicę między tablicami.

<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = mysqli_connect($servername, $username, $password, $db);

echo "Connected successfully\n";

$tags = preg_split("/\,/", $_POST['tags']);
$invalidEmails = array();
$count = 0;

// modify your array how you want it
foreach ($tags as $i => $tag) {
    $trim_brackets = trim($tag, '[]');
    $trim_quotes = trim($trim_brackets, '"');
    $tags[$i] = $trim_quotes;
}

// build placeholders for WHERE IN
$in = str_repeat('?,', count($tags) - 1) . '?';
// prepare query
$stmt = $conn->prepare("SELECT mail FROM dej_colleagues WHERE mail IN ($in)");
// bind an array of values. First params is a type list.
$stmt->bind_param(str_repeat('s', count($tags)), ...$tags);
$stmt->execute();
$results = $stmt->get_result();
// fetch the matching mails into an array
$mails = [];
foreach ($results as $row) {
    $mails[] = $row['mail'];
}

// get the difference between the two arrays
$invalidEmails = array_diff($tags, $mails);

if (count($tags) === count($mails)) {
    echo "good";
}

var_dump($invalidEmails);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy przechowywanie nazw użytkowników i haseł w bazie danych jest bezpieczne?

  2. Funkcje przechowywane w MySQL — dynamiczne/zmienne nazwy tabel i kolumn

  3. Różnica między sterownikami ANSI i Unicode w MySQL

  4. Jak włączyć mysqlnd dla php?

  5. Nieznany początkowy indeks zestawu znaków '255' odebrany z serwera