Чтение внутри массива

Пожалуйста, рассмотрите ниже код.
Я хочу читать электронные письма в массиве держателей,
но когда я пытаюсь получить доступ к $ holder [’email’], происходит сбой.
Я хочу проверить новое введенное письмо со старыми письмами в базе данных.
вот код:

$conn = mysqli_connect("localhost", "root", "" ,"note_db");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//echo "Connected successfully";

$email = $_REQUEST ['email'];
$pass = $_REQUEST ['pass'];
$result = mysqli_query($conn, "SELECT email FROM users");

$holder = array();

while($row = mysqli_fetch_array($result)){
$record = array();

$record ['email'] = $row['email'];
$holder [] =  $record;

}

if($holder['email'] == $email){
echo "email was set before";
return;
}
else{
$sql = mysqli_query($conn,"INSERT INTO users VALUES ('$email', '$pass')") ;
echo "email Inserted to DataBase";

}

mysqli_close($conn);

1

Решение

попробуй это :

$conn = mysqli_connect("localhost", "root", "" ,"note_db");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//echo "Connected successfully";

$email = $_POST ['email'];
$pass = $_POST ['pass'];
$result = mysqli_query($conn, "SELECT email FROM users");

$holder = array();
while($row = mysqli_fetch_array($result)){
$holder [] =  $row;
}
foreach($holder as $val){
if($val['email']==$email){
echo "email was set before";
return FALSE;
}
else{
$sql = mysqli_query($conn,"INSERT INTO users VALUES ('$email', '$pass')") ;
echo "email Inserted to DataBase";
}
}


mysqli_close($conn);
2

Другие решения

Если вы хотите только проверить, занята ли уже электронная почта, вы можете достичь того же результата, используя логический флаг. Также рассмотрите возможность использования PDO или подготовленных заявлений. Кроме того, укажите, будете ли вы принимать значения из $ _POST или $ _GET.

$conn = mysqli_connect("localhost", "root", "" ,"note_db");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//echo "Connected successfully";

$email = $_POST['email']; //Or $_GET
$pass = $_POST['pass'];  //Or $_GET
$result = mysqli_query($conn, "SELECT email FROM users");

$found = false; //Boolean to check if email is already taken

while($row = mysqli_fetch_array($result)) {
if ($row['email'] == $email) { //If email exists in database
$found = true;
break;
}
}

if ($found) { //If email exists in database
echo "email was set before";
return;
} else { //Email doesn't exist so inset, Consider using prepared statements
$sql = mysqli_query($conn, "INSERT INTO users VALUES ('$email', '$pass')") ;
echo "email Inserted to DataBase";
}

mysqli_close($conn);
0

Используйте код ниже

$conn = mysqli_connect("localhost", "root", "" ,"note_db");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//echo "Connected successfully";

$email = $_REQUEST ['email'];
$pass = $_REQUEST ['pass'];
$result = mysqli_query($conn, "SELECT email FROM users");

$holder = array();

while($row = mysqli_fetch_array($result)){
$record = array();

$record ['email'] = $row['email'];
$holder [] =  $record;

}

foreach( $holder as $key => $hold){
if($hold['email'] == $email){
echo "email was set before";
return;
}else{
$sql = mysqli_query($conn,"INSERT INTO users VALUES ('$email',  '$pass')") ;
echo "email Inserted to DataBase";

}
}

mysqli_close($conn);
0

Это потому, что $ holder [’email’] не существует.
$ foo [] = «bar» // Предоставить вам этот массив «Array ([0] =>» bar) «Чтобы получить все электронные письма в $ foo, вы должны зациклить его

Редактировать: например, как предложено @Shahid Ahmad

foreach($holder as $h) {
echo $h['email'];
}

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector