• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Выбор

  • Автор темы Alexygen
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Alexygen

Поодскажите пожалуйста как отфильтровать результат который занесен в переменную $temp_value и уже имеется в таблице emails и emails_sender и потом занести в таблицу emails? Вот код:

while(count($explode_filtered_result) > 0)
{
$temp_value = array_pop($explode_filtered_result);

$email_search = mysql_query("select email from emails where email='$temp_value' ");

if(!$email_search){
$insert_email = mysql_query("insert into emails (email,user) values ('$temp_value','$user_id') ");
}

if(!$insert_email)
{
$error = 1;
echo "$email_search<br><font color=red>Ошибка при попытки записи в БД адреса $temp_value.</font>";
}
}
 
G

Gisma

может просто проверить кол-во возвращенных рядов?:)
 
G

Gisma

:) ну тогда расскажи смысл слова "отфильтровать"
Оно для меня слишком умное и непонятное.
Ну а потом объясни для чего ты привел этот код
 
A

Alexygen

Я заношу запись в таблицу и мне надо проверить имеется ли такая запись в таблице emails и в таблице emails_send, если нет то выставить ее в таблицу emails
 
G

Gisma

Да, кул
Теперь смотрим твои строки
if(!$email_search){
$insert_email = mysql_query("insert into emails (email,user) values ('$temp_value','$user_id') ");
}
Перевожу если $email_search равен FALSE то вставляем, так?
Лезем в мануал читаем строки
Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.
Это означает, что возникает ситуация, когда рядов нет, но запрос правилен, а следовательно у тебя вставка не проходит. И я тебе говорю вставь дополнительно проверку на количество возвращенных рядов.
 
A

Alexygen

Я изменил код на:
while(count($explode_filtered_result) > 0)
{
$temp_value = array_pop($explode_filtered_result);

$email_search = mysql_query("select email from emails where email='$temp_value'");
$email_search_step_2=mysql_num_rows($email_search);
if(!$email_search_step_2){
$insert_email = mysql_query("insert into emails (email,user) values ('$temp_value','$user_id') ");
}
if(!$insert_email)
{
$error = 1;
echo "$email_search<br><font color=red>Îøèáêà ïðè ïîïûòêè çàïèñè â ÁÄ àäðåñà $temp_value.</font>";
}
}

Теперь если в переменной находиться один email, который уже есть в базе emails, то он его не пропускает, а вот если в переменной содержуться два, то он пропускает их обоих!
 
G

Gisma

как в это переменной хранятся два емейла?!
твой SQL такой
"select email from emails where email='$temp_value'"
ты понимаешь что сам творишь?:)
 
A

Alexygen

В этой переменной может храниться сколько угодно мыл. Мне надо чтобы они не повторялись в базе. Вот и надо запрос который будет проверять!!! Это и был мой вопрос!!!
 
G

Gisma

Это не было ясно с самого начала. И заметь как отличается твой конечный вопрос от первого. Как хранятся емейлы в твоей переменной? через запятую?
 
S

s10

знал я одного человека который записывал в одно поле много значений через ",".
судьба у него была тяжелая.
:)
 
A

Alexygen

Для: s10
Знаю много людей которые ОЧЕНЬ МНОГО ВЫЁ..., а сами ни хрена не могут!!! :)
 
A

Andrew Stephanoff

Alexygen, ты не прав. Хоть я и не знаю лично s10, но могу сделать вывод, что что-то он сделать может. А тебе лучше выбирать выражения, если тебя подкололи, не обязательно так хамить.
 
A

Alexygen

Я пришел сюда за помощью, а не за ехидством и подколами! Нашел над кем стебаться, над новичком, как буд-то бы сам родился со знаниями языков программирования! А о его знаниях я сделал вывод из того, что человек который отвечат не по теме сам ничего не знает!

А нормальные люди с незнакомыми людми общаются уважительно, а кто этого не понимает сам заслуживает такого же отношения!
 
G

Gisma

вот на это и будем считать конфликт закрытым;)
а теперь продолжение дискуссии : разрезай свою переменную по запятым и проводи несколько запросов в цикле, другие вариации на тему вполне могут оказаться неэффективными ввиду того что я элементарно не вижу все картины что творится у тебя в программе, а это простое как лопата решение, решит твою проблему
 
S

s10

2 : Alexygen
Прости меня пожалуйста - я действительно не со зла.
А подкалывать или ( упоси гсподи ) оскорблять тебя у меня мыслей и близко не было.
все люди равны в своих правах (до тех пор пока они не оказались лошьём). это первое.

второе. если тебе не нравиться копаться с запятыми, то почему бы не изменить структуру базы, и добавить таблицу в которой пишутся твои емэйлы, и соответствующие id их пользователей.
Код:
id_user	email
45			vasia@mail.ru
45			vas_1@tut.by
...
а в первой хранить чисто имя пользователя и его id
Код:
id_user name
45		 vasiliy
ну как ? чем не вариант ? и будешь тогда нормально все искать.

и наконец третье. <!--QuoteBegin-Alexygen+4:08:2006, 18:14 -->
<span class="vbquote">(Alexygen @ 4:08:2006, 18:14 )</span><!--QuoteEBegin-->Знаю много людей которые ОЧЕНЬ МНОГО ВЫЁ..., а сами ни хрена не могут!!!
[snapback]41709" rel="nofollow" target="_blank[/snapback]​
[/quote]
я тоже очень много таких знаю. но если вдруг тебе показалось, хотя бы чуть чуть, что я из таких
прошу тебя быть по конкретней в своих предъявах, при этом следя за словами.

ещё раз прошу извинить. я просто шутил.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!