Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Periksa apakah semua nilai dalam array ada di kolom database

Akan lebih efisien untuk membuat pernyataan dengan WHERE IN untuk mendapatkan email yang cocok, lalu membandingkan array yang dihasilkan. Anda dapat menggunakan array_diff() untuk mendapatkan perbedaan dari array.

<?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. mysql auto_increment sebesar 5?

  2. Cara Migrasi Standalone Moodle ke Clustered Database Scalable Setup

  3. Mengapa waktu unix MySQL berhenti dari batas integer 32 bit yang tidak ditandatangani?

  4. Cara Mengelompokkan Penyeimbang Beban ProxySQL Anda

  5. Bagaimana cara mendapatkan perbedaan tahun dari dua tanggal yang berbeda?