[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновление записей в таблице
ihaveabiggun
$p, $l - одномерные массивы паролей и логинов соответственно, с текстовыми данными и числовыми ключами.



for ($k=0; $k < count($l); $k++)
{
$upd = mysql_query("
UPDATE `user`
SET `password`="
.$p[$k]."
WHERE `username`="
.$l[$k]."
"
)
or die(mysql_error());

}



Таблица "user" содержит кучу полей, среди которых есть `username` varchar(100), `password` varchar(32).
Выпадает ошибка:

Цитата
Цитата
"Unknown column 'agape' in 'where clause'"



Причём 'agape' - это $l[0] в массиве логинов.

Спасайте, господа хорошие знатоки!




Спустя 7 минут, 34 секунды (11.01.2012 - 17:34) tomash написал(а):
$upd	=	mysql_query("
UPDATE `user`
SET `password`='"
.$p[$k]."'
WHERE `username`='"
.$l[$k]."'
"
)

Спустя 14 минут, 52 секунды (11.01.2012 - 17:49) ihaveabiggun написал(а):
Результат FALSE - проверено "mysql_affected_rows ( )".

Цитата
Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given in *$PATH*

Спустя 4 минуты, 8 секунд (11.01.2012 - 17:53) Winston написал(а):
$upd	=	mysql_query("
UPDATE `user`
SET `password`='"
.mysql_real_escape_string($p[$k])."'
WHERE `username`='"
.mysql_real_escape_string($l[$k])."'
"
) or die(mysql_error());

Или же md5() для поля password - это если ты его шифруешь вообще.

Спустя 7 минут, 52 секунды (11.01.2012 - 18:01) inpost написал(а):
ihaveabiggun
В коде вообще не вижу я mysql_affected_rows biggrin.gif

Спустя 1 час, 7 минут, 36 секунд (11.01.2012 - 19:09) ihaveabiggun написал(а):
Пароли в массиве уже в md5, просто не стал сильно расписывать.
А вот предложение тоже провалилось


for ($k=0; $k < count($l); $k++)
{
$upd = mysql_query("
UPDATE `mdl_user`
SET `password`='"
.mysql_real_escape_string($p[$k])."'
WHERE `username`='"
mysql_real_escape_string(.$l[$k])."'
"
)
or die(mysql_error());

}
printf("UPDATED записей: %d\n", mysql_affected_rows($upd));


Цитата
Parse error: syntax error, unexpected T_STRING in *$PATH* on line 7


7 строка это:
Цитата
WHERE `username`='"mysql_real_escape_string(.$l[$k])."'

Спустя 2 минуты, 25 секунд (11.01.2012 - 19:11) SlavaFr написал(а):
напрашивается вопрос, от куда берутся значения для $p и $l.
если из таблицы, то все делается одним единственным update.

Спустя 3 минуты, 24 секунды (11.01.2012 - 19:15) nugle написал(а):
Вас не смущает, что не так
WHERE `username`='"mysql_real_escape_string(.$l[$k])."'
а так
WHERE `username`='".mysql_real_escape_string($l[$k])."' ?

Спустя 20 минут, 47 секунд (11.01.2012 - 19:35) inpost написал(а):
ihaveabiggun
Внутри скобок точка лишняя. Один раз правильно написал, второй раз - нет smile.gif Точнее она не лишняя, а стоит не в том месте, где надо smile.gif

Спустя 5 минут, 15 секунд (11.01.2012 - 19:41) ihaveabiggun написал(а):
Прошу прощения. Опечатался, глаза уже вываливаются просто smile.gif
Но результата не много:

Цитата
Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given in *$PATH* on line 12


И соответственно:

Цитата
UPDATED записей: 0

Спустя 2 минуты, 34 секунды (11.01.2012 - 19:43) ihaveabiggun написал(а):
Значения для $l and $p берутся из *.txt

Спустя 7 минут, 52 секунды (11.01.2012 - 19:51) inpost написал(а):
ihaveabiggun
А ты уверен, что функция affected_rows именно так пишется? Ану введи в гугле:
"php.net mysql_affected_rows" и посмотри внимательнее.

Спустя 7 минут, 9 секунд (11.01.2012 - 19:58) ihaveabiggun написал(а):
OK.
Уже без ошибок, но данные в базе не обновляет ...


printf("UPDATED: %d\n", mysql_affected_rows());


Цитата
UPDATED: 0


И проверка руками в phpmyadmin показывает, что не обновилось ничего ...

Спустя 10 минут, 15 секунд (11.01.2012 - 20:08) inpost написал(а):
ihaveabiggun
Если данные обновились САМИ НА СЕБЯ, то данные не обновились.

Спустя 3 минуты, 48 секунд (11.01.2012 - 20:12) ihaveabiggun написал(а):
Философски smile.gif))
Поясняю у меня есть некоторые "правильные" md5 пароли и есть те, что в базе ("неправильные"). В *.txt логины\пароли - правильные. Берем заведомо правильный md5 пароля и сравниваем с тем, что "обновился" ... неверно. Да ещё и запомнил конец одного из тех, что должны были обновился - не изменилось ничего ((

Спустя 6 минут, 6 секунд (11.01.2012 - 20:18) nugle написал(а):
Возьми свой запрос и выведи, а потом в pma просто команду вставь и посмотри там ли работает
$upd	= "
UPDATE `user`
SET `password`='"
.mysql_real_escape_string($p[$k])."'
WHERE `username`='"
.mysql_real_escape_string($l[$k])."'
"
;
echo $upd;

Спустя 16 минут, 32 секунды (11.01.2012 - 20:35) ihaveabiggun написал(а):
nugle

Спасибо! Разобрался )))
Проблема глупейшая (у меня других и не бывает) ... После первого же логина в *.txt стоял лишний пробел и, соответвенно, в базе у меня такого нет ((


"Всегда парюсь на простейшем перепробовав все МЕГАварианты ...."

Спустя 18 минут, 57 секунд (11.01.2012 - 20:54) nugle написал(а):
просто сделайте так и будет все норм)
$upd	=	mysql_query("
UPDATE `user`
SET `password`="
.$p[$k]."
WHERE `username`="
.$l[$k]."
"
)
or die(mysql_error().'<br />'.$upd);

Спустя 48 минут, 40 секунд (11.01.2012 - 21:43) ihaveabiggun написал(а):
Там фишка не в "mysql_real_escape_string", а именно в самих лишних пробелах в файле.
Спасибо всем за помощь !!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.