За последние 24 часа нас посетили 66178 программистов и 1629 роботов. Сейчас ищут 1060 программистов ...

проверка на существовавания значения

Тема в разделе "PHP для новичков", создана пользователем serj011, 11 дек 2013.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Подскажите как проверить в цикле существует ли уже в таблице такое значение(email)?
     
  2. AmsTaFFix

    AmsTaFFix Активный пользователь

    С нами с:
    10 дек 2013
    Сообщения:
    22
    Симпатии:
    0
    скорее всего вы используете MySQL, тогда попробуйте что-то такое:
    SELECT count(*) FROM my_table where email="$email"
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    будем считать, что $email уже подвергался mysqli_real_escape
    Код (PHP):
    1. // запрос вернет либо одну строку когда есть такой емайл, либо ни одной строки если нет такого емайла.
    2. $result = mysqli_query($link, "SELECT 1 FROM my_table WHERE email='$email'");
    3. if (mysqli_num_rows($result)) {
    4.   // есть такое
    5. }


    вот это уточнение непонятно. запросы желательно выносить из цикла. допустим в цикле мы накопили все интересующие нас емайлы в массиве.
    тогда
    Код (PHP):
    1. if (count($emails)) {
    2.   $strList = implode(', ', array_map(function($s) {return "'$s'";}, $emails));
    3.   // здесь уместно считать на стороне MySQL
    4.   $result = mysqli_query($link, "SELECT COUNT(*) AS cnt FROM my_table WHERE email IN($strList)");
    5.   $row = mysqli_fetch_assoc($result);
    6.   if ($row['cnt'] == count($emails)) {
    7.     // все адреса уже есть
    8.   }
    9. }
     
  4. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    artoodetoo, с вашим вариантом что то ничего не получилось, выдает ошибку.
    AmsTaFFix ваш вариант работает. только вот помоему немного "тяжеловесный код" у меня получился... мне нужно этим кодом в базе обработать несколько тысяч строк

    $result_a = mysql_query("SELECT count(*) FROM users WHERE url = '$name'");
    $result_a = mysql_fetch_array($result_a);
    $result_a = $result_a[0];
    if($result_a > '1' ) {
    $name = $name.$myrow["id"];
    }
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    ну понятное дело, нельзя смешивать mysql и mysqli функции.
    удачи!
     
  6. AmsTaFFix

    AmsTaFFix Активный пользователь

    С нами с:
    10 дек 2013
    Сообщения:
    22
    Симпатии:
    0
    Я всего лишь навел на мысль как можно сделать а в какой стороне искать ответ ) покажите цифры, по которым вы определяете, что у вас код "тяжеловесен", без них ничего сказать нельзя )