Код (Text): $result = mysql_query("SELECT code FROM product_info WHERE parent_brand = 18"); $d = 1; while ($result2 = mysql_fetch_array($result)) { $code = "obs".$d; mysql_query ("UPDATE product_info SET code='$code'"); $d++; } Цель присвоить код для выбранных позиций. Но он присваивает одно и то же число, причем всем строкам в базе. Что я не так делаю?
надо условие WHERE, которое бы ограничивало записи только теми, которые тебе нужны в данный момент. разве не очевидно? SQL оперирует множествами, а не какой-то мифической "текущей позицией фиг знает где". так укажи какое множество надо изменить.
Все-равно не работает. По условиям выборки получается 383 записи, и она ставит на все 383 записи одинаковое значение obs383, не начиная с obs1 и т.д. а на все одинаковый
вот блин, пытаюсь сформулировать так чтобы ты понял, а получается что цитирую тебя же: если условие включает в себя все 383 записи, будут изменены все 383 записи. что ты приказал сделать, то и делается. укажи в условии какая именно 1 (одна!!!) запись должна получить уникальное, черт побери, значение. и она его получит. потом адресуй другую запись другим условием и т.д. — 383 уникальных условия. а не 383 раза по 383 записи враз. понял, нет?
Выбираю множество по условию Код (Text): $result = mysql_query("SELECT * FROM product_info WHERE parent_brand = 18"); Задаю начальное значение переменной Код (Text): $d = 1; Запускаю цикл, который пройдет по порядку по выбранному множеству Код (Text): while ($result2 = mysql_fetch_array($result)) { Создаю переменную, которую хочу вставить Код (Text): $code = "obs".$d; обновляюю указывая условие (я так понимаю здесь видимо кроется лажа?). Но у меня условие только это. Код (Text): mysql_query ("UPDATE product_info SET code='$code' WHERE parent_brand = 18"); +1 к переменной Код (Text): $d++; закрываю скобочку Код (Text): } Я не спорю, что где-то не врубаюсь и делаю по идиотски. Прочитал последнее сообщение и вроде все понял. Но раз не работает - значит что-то упустил.
проблема больше в том, как вы проблему описываете и заставляете кроточащий моск программиста отвлекаться и вникать в вашу задачу глубже. =)
artoodetoo Вроде правильно понял какую я задачу преследую. Что касается проблемы, то я реально не вижу где тут лажаю! Если бы получилось самому разобраться, то сюда бы не писал.
все нужные слова написаны. отхлестай себя по щекам или прими ледяной душ, что-нибудь сделай чтобы тебя вштырило, наконец. а если не получится, значит не судьба. бывает такое: не все могут красиво танцевать или писать книги. так же и программирование.
Вопрос снят. Решение найдено! Суть такой лажи в моей невнимательности или усталости. Кому интересно: Код (Text): $result = mysql_query("SELECT * FROM product_info WHERE parent_brand = 18"); $d = 1; while ($result2 = mysql_fetch_array($result)) { $id = $result2['id']; $code = "obs".$d; mysql_query ("UPDATE product_info SET code='$code' WHERE id = '$id'"); $d++; } А могли бы сразу сказать, что я id проморгал Добавлено спустя 1 минуту 36 секунд: А вообще artoodetoo все правильно сделал, что заставил поглубже покопаться. Зато в следующий раз такую лажу не пропущу. Спасибо!
обычно так и происходит. потом через неделю этот же тупень приходит и задает точно такой же вопрос, только имя таблицы другое. вот хочется чтобы иногда получалось лучше.