Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Przenoszenie bazy danych
Forum PHP.pl > Forum > Przedszkole
marcin86s
  1. while($r = mysql_fetch_array($stara_users))
  2. {
  3. $id = $r['id'];
  4. $email = $r['email'];
  5. $clan = '';
  6. $username = $r['username'];
  7. $password = '';
  8. $oldpassword = $r['password'];
  9. $avatar = '';
  10. $logins = $r['visits'];
  11. $register_date = date("Y-m-d H:i:s", $r['registerdate']);
  12. $last_login = date("Y-m-d H:i:s", $r['lastlogin']);
  13. echo ':'.$email.'| '.$username.'| '.$oldpassword.'| '.$logins.'| '.$register_date.'| '.$last_login.'<br />';
  14.  
  15. $dodaj_nowa = mysql_query('INSERT INTO users (id, email, username, password, oldpassword, avatar, logins, register_date, last_login) VALUES ('.$id.', '.$email.', '.$clan.', '.$username.', '.$password.', '.$oldpassword.', '.$avatar.', '.$logins.', '.$register_date.', '.$last_login.')', Nowa());
  16. NowaClose();
  17. echo $username.'Dodawanie... <br />';
  18. }

  1. CREATE TABLE IF NOT EXISTS `users` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `email` varchar(254) NOT NULL,
  4. `clan` varchar(254) NOT NULL,
  5. `username` varchar(32) NOT NULL DEFAULT '',
  6. `password` varchar(64) NOT NULL,
  7. `oldpassword` varchar(64) NOT NULL,
  8. `avatar` varchar(255) NOT NULL,
  9. `logins` int(10) UNSIGNED NOT NULL DEFAULT '0',
  10. `register_date` datetime NOT NULL,
  11. `last_login` datetime NOT NULL,
  12. PRIMARY KEY (`id`),
  13. UNIQUE KEY `uniq_email` (`email`),
  14. UNIQUE KEY `uniq_username` (`username`)
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Wpisy pobiera prawidłowo, ale nie dodaje nowych do bazy danych, co jest nie tak?
nospor
Skoro ci nie dodaje, znaczy że masz błąd zapytania.
Tu masz napisane jak analizować/wyświetlać błędy zapytania:
Temat: Jak poprawnie zada pytanie

przenosze na przedszkole
marcin86s
Za pomocą:
  1. ini_set('display_errors','1');

Odnalazłem literówkę, ale nadal wpisów nie dodaje. tongue.gif
nospor
czemu wy się zawsze skupiacie na pierwszych punktach?!

dalej masz jak wół napisane o mysql_error().... mowilem ci w poprzednim poscie: błąd zapytania! Bierzecie się za programowanie a prostych wskazówek po polsku nie potraficie przeczytać....
marcin86s
Zapytanie było puste. ohmy.gif Tylko teraz dlaczego?
Sephirus
Na Bank brakuje cudzysłowów przy wartościach tekstowych w zapytaniu smile.gif
nospor
@Sephirus to swoją drogą, ale to nie powinno dać efektu, że zapytanie było puste
@autor: popraw te cudzysłowia i pokaz kod po zmianach, włącznie z mysql_error() bo smiem twierdzić że źle tego użyłeś....
marcin86s
  1. while($r = mysql_fetch_array($stara_users))
  2. {
  3. $id = $r['userID'];
  4. $email = $r['email'];
  5. $clan = '';
  6. $username = $r['username'];
  7. $password = '';
  8. $oldpassword = $r['password'];
  9. $avatar = '';
  10. $logins = $r['visits'];
  11. $register_date = date("Y-m-d H:i:s", $r['registerdate']);
  12. $last_login = date("Y-m-d H:i:s", $r['lastlogin']);
  13. echo ':'.$email.'| '.$username.'| '.$oldpassword.'| '.$logins.'| '.$register_date.'| '.$last_login.'<br />';
  14.  
  15. $dodaj_nowa = mysql_query("INSERT INTO 'users' ('id', 'email', 'username', 'password', 'oldpassword', 'avatar', 'logins', 'register_date', 'last_login') VALUES (".$id.", ".$email.", ".$clan.", ".$username.", ".$password.", ".$oldpassword.", ".$avatar.", ".$logins.", ".$register_date.", ".$last_login.")", Nowa());
  16. echo 'ZAPYTANIE:'.$dodaj_nowa;
  17. mysql_query($dodaj_nowa) or die('BŁĄD: '.mysql_error($dodaj_nowa));
  18. NowaClose();
  19. echo $username.'Dodawanie... <br />';
  20. }

Teraz daje:
Kod
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /home/errorice/domains/error-clan.eu/public_html/convert.php on line 64
nospor
Kurcze, chlopie, ty myśl, a nie bezmyslnie kopiujesz przyklady...

nie:$dodaj_nowa = mysql_query("INSERT INTO 'users' ('id', 'email', 'username', 'password', 'oldpassword', 'avatar', 'logins', 'register_date', 'last_login') VALUES (".$id.", ".$email.", ".$clan.", ".$username.", ".$password.", ".$oldpassword.", ".$avatar.", ".$logins.", ".$register_date.", ".$last_login.")", Nowa());

a:$dodaj_nowa = "INSERT INTO 'users' ('id', 'email', 'username', 'password', 'oldpassword', 'avatar', 'logins', 'register_date', 'last_login') VALUES (".$id.", ".$email.", ".$clan.", ".$username.", ".$password.", ".$oldpassword.", ".$avatar.", ".$logins.", ".$register_date.", ".$last_login.")";


Pozatym miales w cudzyslowia wziąść teksty a nie nazwy pol. Nazwa pola to nazwa pola, wartosc tekstowa to wartosc tekstowa.
Sephirus
Ok pokaż kod funkcji
  1. nowa()


i

  1. nowaClose()
nospor
nie: mysql_error($dodaj_nowa)
a: mysql_error()

Prosty przyklad napisany po polsku i w tylu miejscach go tak skaszanić.... no jak tam można?
marcin86s
Cytat(Sephirus @ 28.11.2011, 09:36:21 ) *
Ok pokaż kod funkcji
  1. nowa()


i

  1. nowaClose()

  1. function Nowa()
  2. {
  3. global $conn1;
  4. if( $conn1 )
  5. return $conn1;
  6. $conn1 = mysql_connect( 'localhost', 'uzytkownik', 'haslo') or die('Could not connect to server. '.mysql_error());
  7. mysql_select_db('nazwa_bazy', $conn1) or die('Could not select database.'.mysql_error());
  8. return $conn1;
  9. }
  10.  
  11. function NowaClose()
  12. {
  13. global $conn1;
  14. if( $conn1 != false )
  15. mysql_close($conn1);
  16. $conn1 = false;
  17. }
  18.  
  19. while($r = mysql_fetch_array($stara_users))
  20. {
  21. $id = $r['userID'];
  22. $email = $r['email'];
  23. $clan = '';
  24. $username = $r['username'];
  25. $password = '';
  26. $oldpassword = $r['password'];
  27. $avatar = '';
  28. $logins = $r['visits'];
  29. $register_date = date("Y-m-d H:i:s", $r['registerdate']);
  30. $last_login = date("Y-m-d H:i:s", $r['lastlogin']);
  31. echo ':'.$email.'| '.$username.'| '.$oldpassword.'| '.$logins.'| '.$register_date.'| '.$last_login.'<br />';
  32.  
  33. //$dodaj_nowa = mysql_query("INSERT INTO users (id, email, username, password, oldpassword, avatar, logins, register_date, last_login) VALUES (".$id.", ".$email.", ".$clan.", ".$username.", ".$password.", ".$oldpassword.", ".$avatar.", ".$logins.", ".$register_date.", ".$last_login.")", Nowa());
  34. $dodaj_nowa = "INSERT INTO users (id, email, username, oldpassword, logins, register_date, last_login) VALUES (".$id.", ".$email.", ".$username.", ".$oldpassword.", ".$logins.", ".$register_date.", ".$last_login.")";
  35. echo 'ZAPYTANIE:'.$dodaj_nowa;
  36. mysql_query($dodaj_nowa, Nowa()) or die('BŁĄD: '.mysql_error());
  37. NowaClose();
  38. echo $username.'Dodawanie... <br />';
  39. }

Cytat
ZAPYTANIE:INSERT INTO users (id, email, username, oldpassword, logins, register_date, last_login) VALUES (1, uzytkownik@gmail.com, uzytkownik, 21232f297a57a5a743894a0e4a801fc3, 12, 2010-01-21 12:35:21, 2011-11-25 16:02:22)BŁĽD: Something is wrong in your syntax obok '@gmail.com, uzytkownik, 21232f297a57a5a743894a0e4a801fc3, 12, 2010-01-21 12:35:21' w linii 1

@nospor Wielkie dzięki za pomoc, ale nie spinaj się tak, trochę przesadzasz.
nospor
Niespinam się tylko mam alergie na bezmyślne i nieudolne kopiowanie banalnych przykładów napisanych po polsku.

Nadal nie poprawiles cudzyslowi. Nadal nie czytasz co ci doradzają.

Kolejny prosty przyklad, moze tym razem zrozumiesz:

  1. $sql = "insert into TABELA (pole1,pole2,pole3) values (1,'wartosc tekstowa1', 'wartosc tekstowa2')";

Przyjrzyj się co jest w cudzysłowiach/apostrofach



wersja ze zmiennymi:
  1. $sql = "insert into TABELA (pole1,pole2,pole3) values ($id,'$txt1', '$txt2')";
marcin86s
Dzięki, już śmiga nie potrzebnie bawiłem się z tymi kropkami przy zmiennych, o dziwo wcześniej działało mi to w taki sposób.
nospor
Kropki to łączenie tekstów/zmiennych. Jest to też dobry sposób, ale używanie kropek nie zwalnia w żaden sposób od umieszczania cudzysłowi/apostrofów otaczających wartosci tekstowe.

Wersja z kropkami:
  1. $sql = "insert into TABELA (pole1,pole2,pole3) values (".$id.",'".$txt1."', '".$txt2."')";

Jak widać pomimo używania kropek nadal muszę wstawiać apostrofy otaczające wartość tekstową. Kropka w żaden sposób mnie z tego nie zwalnia.

Poto właśnie miałeś robić:
echo $zapytanie;
by przyjrzeć się swojemu zapytaniu po wygenerowaniu. Wtedy widać jak na dłoni gdzie czego brakuje lub gdzie czego jest nadmiar. Mam nadzieję że na przyszłość poradzisz sobie z tym niesamowicie skomplikowanym mechanizmem jakim jest mysql_error() oraz echo $zapytanie;
marcin86s
Cytat(nospor @ 28.11.2011, 10:25:57 ) *
Mam nadzieję że na przyszłość poradzisz sobie z tym niesamowicie skomplikowanym mechanizmem jakim jest mysql_error() oraz echo $zapytanie;

Na pewno, dziękuje Ci o wspaniały. zakochany.gif
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.