Может ли операция UPDATE изменять строки?

  • Автор темы Автор темы hussar
  • Дата начала Дата начала

hussar

In code we trust!
Может ли операция UPDATE изменять строки?

Я делаю удаление повторяющихся значений из базы. И столкнулся со следующей проблемой.

У меня на странице при каждом событии POST все данные из базы обновляются (делаю UPDATE). Затем я пытаюсь удалить повторы, но удаляются не все. Если отключить UPDATE на странице, то все повторы замечательно удаляются. Данные на странице выводятся в textarea и во время POST уже никак не обрабатываются.

Может ли быть такое что при UPDATE у меня изменяются строки
 
>Может ли быть такое что при UPDATE у меня изменяются строки

Как это и не покажется тебе странным, UPDATE для того и существует, что бы изменять данные.
 
Нет я не в этом смысле :)
Данные не меняются. У меня просто так страница устроена, что на случай того если поменялись данные на ней, все записи прогоняются через UPDATE. Но я ничего не меняю для проверки удаления совпадающих значений. Однако удаляются не все совпадения.
 
hussar, пока тебя понять невозможно. Расскажи про то, что нужно сделать, а не про то решение, которое ты для этого выбрал.
 
ок.
У меня из базы выводятся записи.
Эти записи выводятся в textarea, чтобы пользователь если надо их изменял, но пользователь их может и не менять.
Для того чтобы изменения не пропали, если что-то поменялось, я при каждом вызове пост загоняю все данные в таблицу (UPDATE).

Так же у меня на странице есть пнопка удалить повторы. Вот тут самое интересное...

Повторы удаляются но не все, допустим из 202 записей получается 119, а не 101 как должно быть. Но если я не делаю перед этим UPDATE таблицы, то при сносе повторов получаю правильные 101 запись без повторов.

Таким образом я предположил что при UPDATE что-то происходит с данными, и они становятся не идентичными.

В коде -
У меня сначала происходит UPDATE, а потом выбор повторов.
 
1. Что в твоем понимании повторы?
2. По какому принципу ты определяешь записи для обновления?
 
1. Повторы это полное совпадение содержания 4 полей, т.е. если есть две записи в БД которые совпадают по 4 определенным полям - это повтор.

2. Я не определяю записи для обновления, у меня все записи обновляются в любом случае были ли они изменены или нет.
 
!) Вначале все в группе записей грохай (DELETE)
") Потом вставляй все заново (INSERT)
 
3. А почему эти повторы создаются? Т.е. зачем вносить одинаковые данные?
 
IntenT
повторы вот так определяю и вычищаю, но здесь вопрос не в этом, скрипт работает правильно если перед ним не произошел UPDATE данных таблицы
PHP:
$r=mysql_query("SELECT * FROM temp WHERE flag='$_SESSION[flag]' AND del<>'1'");
	while($t=mysql_fetch_array($r)) {
		if (!isset($arr) || !in_array($t['id'], $arr))
		{
			$q=$t['q'];
			$a1=$t['a1'];
			$a2=$t['a2'];
			$a3=$t['a3'];
			$a3=$t['a3'];
			$a4=$t['a4'];
			$id=$t['id'];
			$res=mysql_query("SELECT * FROM temp WHERE q='$q' AND a1='$a1' AND a2='$a2' AND a3='$a3' AND a4='$a4' AND id<>'$id'");
			while($tmp=mysql_fetch_array($res))
			{
				$arr[]=$tmp['id'];	
			}
		}
	}
	if (isset($arr)){
		foreach($arr as $v)
		{
			mysql_query("DELETE FROM temp WHERE id='$v'");	
		}
		header("Location: ".$_SERVER['PHP_SELF']);
		exit;	
	}

-~{}~ 14.10.04 17:48:

Фанат
У меня в таблице таких полей нет

Кром
Повторы могут создаваться по причине того что поступают в базу из разных мест и пользователи могут добавлять одинаковые данные и плодить повторы.

Screjet
А будет ли это хорошо с точки зрения производительности?

И всетаки интересно узнать что такое делает UPDATE, что так получается.
 
ок, не угадал.
Я не пойму твоей проблемы.
Тебе не нравится, что апдейт изменяет строки и они перестают быть идентичными?
или тебе кажется, что они идентичны, но поиск повторов их не удаляет? Ну так запроси их и выведи через var_dump и глазами смотри свои повторы.
Делов на 5 минут.
Если знаешь чего хочешь.
А если не знаешь, то на форуме тем более не надо сопли жевать
 
Да мне не нравиться что UPDATE меняет строки. Я точно знаю что до UPDATE они абсолютно одинаковые. И если его не делать, то все повторы удаляться. А мне надо добиться чтобы ВСЕ повторы удалялись когда я делаю перед этим UPDATE.
 
Может, покажешь SQL-запрос? Тот самый, который меняет. И заодно блок кода, в котором он используется...
 
Да мне не нравиться что UPDATE меняет строки
не нравится - найди, что она изменяет, и исправь СВОЙ код.
ЕЩЕ ВОПРОСЫ ЕСТЬ?

-~{}~ 14.10.04 18:12:

Cougar
а ты, типа, вперя свой могузий взор в его код сразу угадаешь, в чем проблема?
может быть, тебе гадательный салон открыть?
Тебе известно, что программисты не гадают, а ОТЛАЖИВАЮТ свои программы?
 
Cougar
Вот код
PHP:
$q=$_POST['q'][$i][0]; 	
$a1=$_POST['a1'][$i][0]; 	
$a2=$_POST['a2'][$i][0];	
$a3=$_POST['a3'][$i][0];	
$a4=$_POST['a4'][$i][0]; 	
$categ=$_POST['categ'][$i][0];	
$reit=$_POST['reit'][$i][0]; 
$id=$_POST['id'][$i][0]; 
mysql_query("UPDATE temp SET q='$q', a1='$a1', a2='$a2', a3='$a3', a4='$a4', reit='$reit', categ='$categ' WHERE id='$id'");

Фанат

Я не могу найти, поэтому и спросил на форуме, может уже у кого-то была такая проблема.
 
Я не могу найти
Я тебе сказал, КАК найти.
Почему ты до сих пор здесь, а не ушуршал искать?
может уже у кого-то была такая проблема
НЕТ НЕ БЫЛО.
потому, что это не проблема базы или пхп, а проблема исключительно твоего кривого кода.
А проблем с кодом, написанным твоими кривыми рукаими ни у кого, слава богу, не было, и, я надеюсь, никогда не будет.
 
Бр-р-р... полностью согласен с раздолбаем.

hussar
Ты не думал о том, чтобы перед UPDATE проверять уже имеющиеся в БД данные - дабы заранее обезопасить себя от повторов?
 
Сверху