Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] Masowe tworzenie MD5
Forum PHP.pl > Forum > Przedszkole
deLL
Witam,

Mam problem. Potrzebuję utworzyć w jednej kolumnie w bazie danych (która zawiera ponad 6000 wierszy) hasła, które będą zakodowane w md5. Kolumna z hasłami znajduje się w tej samej tabeli.


Mam taki kod:
  1. $pobierz_rekordy = "SELECT `id`, `kod`, `haslo`, `haslo_md5` FROM `maile`;";
  2.  
  3. $query_one = mysql_query($pobierz_rekordy, $polaczenie)
  4.  
  5. while($row = mysql_fetch_array($query_one)) {
  6.  
  7. $kod = $row['kod'];
  8. $haslo = $row['haslo'];
  9. $md5 = $row['md5'];
  10.  
  11. $zaktualizuj_rekordy = "UPDATE `kody` SET `haslo_md5` = MD5( '" . $haslo . "' );";
  12. $query_two = mysql_query($zaktualizuj_rekordy, $polaczenie)
  13.  
  14. //echo "Hasło: " . $row['haslo'] . " | MD5: " . md5($row['haslo']) . "<br />";
  15.  
  16. }
  17.  
  18. mysql_close($polaczenie);
Lecz on ustawie wszystkie komórki hashem md5 z ostatniego wiersza.

Tak to mniej-więcej wygląda w bazie danych:

Z góry dziękuje za pomoc! Lkingsmiley.png
gitbejbe
a gdzie warunek w zapytaniu $zaktualizuj_rekordy ?
dodaj do zapytania np:

WHERE kod = $kod and haslo = $haslo. Nie dziw się, że wszędzie przypisuje Ci takie samo hasło, skoro sam kazałeś to robić ;p

phpion
facepalmxd.gif

Wykonaj po prostu takie zapytanie na bazie, bez zabawy w PHP i pętle...

  1. UPDATE `kody` SET `haslo_md5` = MD5(`haslo`);
pmir13
To co aktualnie robi ten kod:

1. Pobierz wszystkie rekordy, w szczególności $haslo.
2. Dla każdego rekordu wykonaj : w kolumnie md5_haslo ustaw md5($haslo) dla całej tabeli.

Krótko mówiąc dla każdego hasła wielokrotnie zmieniasz całą tabelę, w związku z tym na sam koniec zostaje w całej tabeli ustawione haslo_md5 na hash ostatniego rekordu.
Samo zapytanie mysql:

  1. UPDATE `kody` SET `haslo_md5` = MD5( `haslo` );


zrobi dokładnie to co potrzebujesz, to jest update na całą tabelę, dla każdego rekordu ustawi odpowiedni dla jego hasła hash. Nie potrzeba nic z bazy wcześniej wyciągać, nawet php do tego nie jest potrzebny, wystarczy wklepać to w konsoli mysql, phpmyadminie czy jakimkolwiek innym kliencie mysql.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.