$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).
Выпадает ошибка:
Цитата
Причём '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
Спустя 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Внутри скобок точка лишняя. Один раз правильно написал, второй раз - нет

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

Но результата не много:
Цитата |
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());
И проверка руками в phpmyadmin показывает, что не обновилось ничего ...
Спустя 10 минут, 15 секунд (11.01.2012 - 20:08) inpost написал(а):
ihaveabiggun
Если данные обновились САМИ НА СЕБЯ, то данные не обновились.
Спустя 3 минуты, 48 секунд (11.01.2012 - 20:12) ihaveabiggun написал(а):
Философски

))
Поясняю у меня есть некоторые "правильные" 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", а именно в самих лишних пробелах в файле.
Спасибо всем за помощь !!!