Доброго времени суток. Подскажите пожалуйста, как правильно вывести массив и вставить в условие: Имеется у меня статическое условие PHP: if($email == 'mail@box.ru'){} Дело в том, что записи хранятся в БД, и помимо mail@box.ru имеются и другие записи. Хочется все записи вставить в условие. Вывожу вот такой массив: PHP: $res = mysqli_query($db, "SELECT emailbox FROM emailbox"); $arr = array(); while($rows = mysqli_fetch_row($res)){ print_r($rows[0]); } и понимаю, что если и обозначить переменную $rows[0], то в условие не получится вставить, так как выводится не правильно. Подскажите пожалуйста, как правильно вывести массив, что-бы вставить в условие.
PHP: $res = mysqli_query($db, "SELECT `здесь укажи все поля которые хочешь вывеси` FROM `emailbox`"); # или укажи вытащить все поля символом * $res = mysqli_query( $db, "SELECT * FROM `emailbox`" ); $i = 0; $arr = []; while( $rows = mysqli_fetch_row( $res ) ) { $arr [$i]['id'] = $rows['id']; $arr [$i]['email'] = $rows['email']; $arr [$i]['login'] = $rows['login']; $i++; } print_r ( $arr ); Тебе хочется вывести все записи одной таблицы или все поля одного столбца, конкретней.
Используй подготовленные запросы prepare и в запрос вставь данные. После используй num_rows для определения "нашлось ли в бд"
Повторюсь: мне надо в условие вставить все почтовые ящики, которые находятся в поле emailbox. К сожалению Ваш вариант совсем нерабочий. Не понятно, как это сделать. А разве этот запрос неверный? PHP: $res = mysqli_query($db, "SELECT emailbox FROM emailbox"); $arr = array(); while($rows = mysqli_fetch_row($res)){ print_r($rows[0]); } Выводит же как надо... В данном случае найдено 3 почтовых адреса... Только я не знаю как их правильно вставить в условие. Назначаю переменную: PHP: $bdmail = $rows[0]; Если переменную вставляю в условие: PHP: if($email == $bdmail){} То соответственно не работает. Так пока и не разобралась, как это сделать.
Вам говорят вставить условие прямо в запрос (WHERE `emailbox`=, IN() и т.п.). Не понятно, что значит «все записи вставить в условие». Для всех записей условие не требуется. Или вы все-таки хотите выделить какое-то подмножество записей, а не все? Короче непонятно.
а... на просторах интернета нашла вроде как пример... Но всеравно не работает. Вставила: PHP: if(isset($_GET['email'])){ $email = htmlspecialchars($_GET['email']); $query = "SELECT * FROM emailbox WHERE emailbox='$email';"; $res=mysqli_query ($query); $allmail = mysqli_fetch_array ($res); if($email == $allmail['emailbox']) { echo "no"; } else { echo"yes"; } } Но по прежнему не работает. Что не так в запросе?
МОжет понял может нет но вот. PHP: $arr = [ 'test@test.ru', 'test2#test.ru' ]; if(in_array($rows[0],$arr)){ //твои действия }
Может, вы все-таки сначала объясните, что вам в общем нужно сделать А то Ща мы вам тут поможем сделать то, не зная что
Хорошо, попробую более подробнее. Искала решение по проверке занятости почтового ящика, нашла решение вот в этом примере (внимание, сторонний ресурс не для рекламмы) Но в примере данные хранятся в файле, а у меня в базе данных. Ниже пишут как сделать привязку к БД, но у меня никак не работает. Вот и сижу ломаю голову, как прикрутить БД, что-бы проверялась почта из БД.
Да, при живом поиске SELECT(ы) по вводимому мылу. Когда уже ввод мыла будет подтвержден, вы без предварительного выбора делаете вставку, а потом анализируете результат на предмет дубль ключа (поле с мылом, естественно, должно быть первичным ключом или юником). HTML-кодирование в вашем послед. коде – бред (без обид). Нужно использовать подготовленный запрос (о чем выше писали) или экранирование. Валидация по составу тоже не помешает. Это в ряде случаев может заменить первое (если вы не склонны периодически менять правила валидации без оглядки на защиту). --- Добавлено --- PHP: if ($allmail = mysqli_fetch_array ($res)) { Результат выполнения запроса, естественно, тоже нужно проверять. --- Добавлено --- $num_rows тут тоже можно использовать, о чем выше писали.
Как так? Я имел в виду, что вместо PHP: $res=mysqli_query ($query); нужно делать хотя бы PHP: $res=mysqli_query ($query) or die();
в запросе ты намутила невероятное) чтобы проверить почтовый ящик соответственно нужно ввести email в поле вода, и потом этот же email сравнивать с бд, существует ли такой email в бд. PHP: if( isset( $_POST['email'] ) ) { $email = htmlspecialchars($_POST['email']); $query = " SELECT `emailbox` FROM `you_table_email` WHERE `emailbox` = '.$email.' "; $res=mysqli_query ( $query ); $allmail = mysqli_fetch_array ($res); if( $allmail['emailbox'] > 0 ) { echo "no"; }else{ echo"yes"; } } и еще раз повторюсь используй подготовительные запросы: https://php.ru/manual/mysqli.prepare.html --- Добавлено --- с тебя чтобы информацию вытащить нужно постараться.
@_ne_scaju_, что за точки в тексте запроса? --- Добавлено --- О том, что есть бред, выше у меня прочитали? --- Добавлено --- ...Ну и проч. замечания, в частности пример условия посмотрите.
Проверяла. Ящик существует. Но скрипт не работает. PHP: if( isset( $_GET['email'] ) ) { $email = htmlspecialchars($_GET['email']); $query = " SELECT `emailbox` FROM `emailbox` WHERE `emailbox` = '.$email.' "; $res=mysqli_query ( $query ); $allmail = mysqli_fetch_array ($res); if( $allmail['emailbox'] > 0 ) { echo "no"; }else{ echo"yes"; } }
@Sofia, я вам др. условие писал Там даже присвоение лишнее: PHP: if (mysqli_fetch_array ($res)) { --- Добавлено --- Присвоение можно было так использовать: PHP: $allmail = mysqli_fetch_array ($res); mysqli_free_result($res); if ($allmail) {
Бред не бред.... но я реально уже голову сломала... Примеров масса, но ниодин не работает. Вот так вот выглядит запись в БД: Сам скрипт index.php PHP: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Проверка формы</title> <meta http-equiv="content-type" content="application/xhtml+xml; charset=windows-1251" /> <script type="text/javascript" src="jquery-1.5.1.min.js"></script> <style> .inputRed{ border:1px solid #ff4040; background: #ffcece; } .inputGreen{ border:1px solid #83c954; background: #e8ffce; } </style> <script type="text/javascript"> var email, password, password2, loginStat, emailStat, passwordStat, password2Stat; $(function() { // Email $("#email").change(function(){ email = $("#email").val(); var expEmail = /[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}/i; var resEmail = email.search(expEmail); if(resEmail == -1){ $("#email").next().hide().text("Неверный формат Email").css("color","red").fadeIn(400); $("#email").removeClass().addClass("inputRed"); emailStat = 0; buttonOnAndOff(); }else{ $.ajax({ url: "testingLoginEmail.php", type: "GET", data: "email=" + email, cache: false, success: function(response){ if(response == "no"){ $("#email").next().hide().text("Email Занят").css("color","red").fadeIn(400); $("#email").removeClass().addClass("inputRed"); }else{ $("#email").removeClass().addClass("inputGreen"); $("#email").next().text(""); } } }); emailStat = 1; buttonOnAndOff(); } }); $("#email").keyup(function(){ $("#email").removeClass(); $("#email").next().text(""); }); //Пароль $("#password").change(function(){ password = $("#password").val(); if(password.length < 6){ $("#password").next().hide().text("Слишком короткий пароль").css("color","red").fadeIn(400); $("#password").removeClass().addClass("inputRed"); passwordStat = 0; buttonOnAndOff(); }else{ $("#password").removeClass().addClass("inputGreen"); $("#password").next().text(""); passwordStat = 1; buttonOnAndOff(); } }); $("#password").keyup(function(){ $("#password").removeClass(); $("#password").next().text(""); }); //Проверка пароля $("#password2").change(function(){ if(password2 != password){ $("#password2").next().hide().text("Пароли не совпадают").css("color","red").fadeIn(400); $("#password2").removeClass().addClass("inputRed"); password2Stat = 0; buttonOnAndOff(); }else{ $("#password2").removeClass().addClass("inputGreen"); $("#password2").next().text(""); } }); $("#password2").keyup(function(){ password2 = $("#password2").val(); if(password2 == password){ password2Stat = 1; buttonOnAndOff(); }else{ password2Stat = 0; buttonOnAndOff(); } }); function buttonOnAndOff(){ if(emailStat == 1 && passwordStat == 1 && password2Stat == 1 && loginStat == 1){ $("#submit").removeAttr("disabled"); }else{ $("#submit").attr("disabled","disabled"); } } }); </script> </head> <body> <form action="#" method="post"> <label><font color='red'>*</font> Ваш E-mail:<br></label> <input name="email" type="text" size="50" id="email"> <span></span><br> <label><font color='red'>*</font> Ваш пароль:<br></label> <input name="password" type="password" size="50" id="password"> <span></span><br> <small>Не менее 6 символов</small> <label><font color='red'>*</font> Подтвердите пароль:<br></label> <input name="password2" type="password" size="50" id="password2"> <span></span><br><br> <input type="submit" name="submit" value="Зарегистрироваться" id="submit" disabled><br><br> <font color='red'>*</font> поля, обязательные для заполнения. </form> Вот файл testingLoginEmail.php PHP: // Соединение с базой данных $user = '***'; $password = '***'; $dbname = '***'; $db = mysqli_connect('localhost', $user, $password, $dbname); mysqli_query($db, 'set names utf8'); // if( isset( $_GET['email'] ) ) { $email = htmlspecialchars($_GET['email']); $query = " SELECT `emailbox` FROM `emailbox` WHERE `emailbox` = '.$email.' "; $res=mysqli_query ( $query ); $allmail = mysqli_fetch_array ($res); if( $allmail['emailbox'] > 0 ) { echo "no"; }else{ echo"yes"; } }
Я др. условие писал. Короче успехов. Заставлять слушать я не собираюсь. --- Добавлено --- И нефиг тупо копипастить чужой код с явными ошибками
Я же ответила, что твое условие тоже не работает. К сожалению с правильным кодом нет, и это уже исправленные варианты, которые указаны выше в данной теме. Получается что тоже с ошибками, раз не работает =( Очень надеюсь, что найдется знающий человек, который в итоге поможет код довести до рабочего состояния =(
@Sofia, на программерском форуме слова «не работает» не катят. Расписывайте, что делали/меняли, как проверяли работоспособность. Я утверждаю, что предложенный мной вариант работает, причем не абы как.
Чтобы не было мыслей на будущее, которые надвигаются что - то подобного: "какие же они *** со своими вопросами, больше ничего не умеют...". http://sandbox.onlinephpfunctions.com/code/4e546ec40f9414b36e8be665aeabcee8c8af861e
Я сам конечно ещё новичок, но первое что бросается в глаза, это 13 строчка в вашем файле testingLoginEmail.php. Попробуйте добавить в функцию mysqli_query($query); первым параметром $db - это ресурс соединения с БД, чтобы было вот так mysqli_query($db, $query);
@Sanya, все верно в mysqli_-ф-циях это обязательный параметр (в отличии от mysql_-). Я этого не заметил и даже процитировал неверный вариант, но эта замыленность глаз объяснима: многие используют ООП-синтаксис mysqli, в котором у query только один обязательный параметр – текст запроса. --- Добавлено --- P.S. ТС так «скосячил» в посте #6. До этого тут все было норм.
Не ресурс, а экземпляр класса mysqli, если быть точнее. Процедурный синтаксис mysqli реализован примерно так: PHP: function mysqli_query($db, $query) { return $db->query($query); }