Я пытаюсь создать систему, в которой администратор может добавлять несколько человек одновременно в базу данных. Я хочу, чтобы эта система не позволяла администратору добавлять людей с адресами электронной почты, уже существующими в базе данных.
ЕСЛИ одно из писем в _POST ["адрес электронной почты"] совпадает с одним из адресов электронной почты в БД, пользователь должен получить сообщение о том, что одно из писем уже существует в база данных. Чтобы добиться этого, я попытался использовать функцию array_intersect (). Однако после этого я получаю предупреждение:
Предупреждение: array_intersect (): Аргумент # 2 не является массивом в ... addusers. php в строке 41
Сначала я подумал, что это как-то связано с тем фактом, что мой второй аргумент был ассоциативным массивом, поэтому я попробовал функцию array_intersect_asso c, которая возвращает то же предупреждение. Как я могу решить эту проблему?
Код добавляющих пользователей. php
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
$conn = mysqli_connect('localhost','*','*','*');
$condition = false; // this is for the other part of my code which involves inserting the output into db
$name = $_POST["name"];
$affix = $_POST["affix"];
$surname = $_POST["surname"];
$emailaddress = $_POST["emailaddress"];
$password = $_POST["password"];
//amount of emailaddresses in db
$checkquery2 = mysqli_query($conn, "
SELECT COUNT(emailaddress)
FROM users
");
$result2 = mysqli_fetch_array($checkquery2);
// the previously mentioned amount is used here below
for($i=0; $i<$result2[0]; $i++){
// the actual emails in the db itself
$q1 = mysqli_query($conn, "
SELECT
emailaddress
FROM
users
");
// goes through all the emails
$result_array1 = array();
while ($row1 = mysqli_fetch_assoc($q1)) {
$result_array1[] = $row1;
}
$query1 = $result_array1[$i]["emailaddress"];
}
// HERE LIES THE ISSUE
for($i=0; $i<count($emailaddress); $i++){
if (count(array_intersect_assoc($emailaddress, $query1)) > 0) {
echo "One of the entered emails already exists in the database...";
echo '<br><button onclick="goBack()">Go Back</button>
<script>
function goBack() {
window.history.back();
}
</script><br>';
$condition = false;
}
else{
$condition = true;
}
}
РЕДАКТИРОВАТЬ , как отмечают комментарии, $ query1 это действительно не массив, это строка. Тем не менее, проблема остается, даже если я удаляю индекс и «[адрес электронной почты]», как в коде, всегда выбирается оператор else, а не if.