Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Komunikat Problem z MySQL.
Forum PHP.pl > Forum > Przedszkole
korey
To znowu ja po napisaniu walidiacji formularza przystąpiłem do przesyłania danych do bazy. myślę ze mój kod jest prawidłowy lecz niestety nie działa:
  1. /*
  2. .
  3. .
  4. sprawdzanie pol formularza
  5. jesli ok idziemy dalej
  6. .
  7. .
  8.  
  9. */
  10. // Wysyłamy zapytanie do bazy danych
  11. $zapytanie_register = "INSERT INTO `accounts` VALUES(NULL, '".$login."', '".sha1($haslo)."', '".$email."', '', '', '', '', '', '')";
  12. // '', = pola ktore wypełnia sie po zalogowaniu.
  13. // Odpowiedz
  14. $odpowiedz = mysql_query($zapytanie_register);
  15. if($odpowiedz > 0){
  16.  
  17. //funkcja ktorej zawartosc jest pobierana, konwertowana i wyswietlana z polskimi znakami
  18. polskie_znaki('Rojestracja przebiegła pomyślnie do końca.<br />
  19. <ul>
  20. <li>Login: '.$login.'</li>
  21. <li>Hasło: '.$haslo.'</li>
  22. <li>E-Mail: '.$email.'</li>
  23. Teraz Możesz pszejść do <a href="/">Logowania.</a>
  24. </ul>
  25. <br />');
  26.  
  27. }
  28. else{
  29. $pokaz_form=false;
  30. echo 'Problem z MySQL.';
  31. }

Dodam ze po usunięciu zapytania i if'a działało jak trzeba.
Połączenie z baza działa. testowalem to na localhoscie i na serwerze i cały czas "'Problem z MySQL."
nospor
nie: if($odpowiedz > 0){
a: if($odpowiedz){

Masz blad zapytania. Wyswietl go. Tu masz napisane jak:
Temat: Jak poprawnie zada pytanie
korey
No tak, ale na mojej innej stronce mam tak samo i smiga jak trzeba
nospor
Rety.... prosta komenda: wyswietl błąd zapytania! Niewazne ze gdzie indziej dziala. Wazne ze tu nie dziala wiec zrob o co proszę.
Oczywiscie ja wiem w czym problem, ale chcę byś sam do tej niesamowitej zagadki sam doszedl - na przyszlosc ci się przyda.

Dodatkowo wyswietl sobie wszystkie bledy. W linku co ci podalem masz to tez opisane jak zrobic. Pamietaj - to ty masz problem, wiec staraj się stosować do wskazowek
korey
miałem 3 błędy i został tylko jeden..'
Notice: Undefined variable: wynik in C:\Program Files\WebServ\httpd-users\Servis\includes\funkcje\generator_kodu.php on line 7

  1. <?php
  2. function generator_code(){
  3. $liczby = range('0', '9'); //liczby 0-9
  4. shuffle($liczby); // tasowanie tablicy
  5. $liczba = array_splice($liczby, 0, 5);
  6. foreach ($liczba as $dane) {
  7. $wynik .= $dane; // <---- to ta linia ;/
  8. }
  9. echo '<input type="hidden" name="getcode" value="'.$wynik.'" />';
  10. echo $wynik;
  11. }
  12. ?>
nospor
przed foreach ma byc:
$wynik = '';
korey
teraz mam taki błądz z DB:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Program Files\WebServ\httpd-users\Servis\pages\page1.php on line 117
  1. --- poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.)
  2. $sql = 'INSERT INTO `accounts` VALUES(NULL, '.$login.', '.sha1($haslo).', '.$email.', '', '', '', '', '', '')'; -- linia 17 <<
  3. echo 'ZAPYTANIE:'.$sql;
  4. mysql_query($sql) OR die('BŁĄD:'.mysql_error());
tabela ma 10 kolumn i indeksy na acc_login, acc_www, acc_ip oraz na acc_email. moze to jakos przeszkadza
nospor
gdy uzywasz apostrofu jako oznaczenie tekstu, to nie mozesz potem w tekscie dac znowu ot tak sobie apostrof. Musisz uzyc \ czyli \'
Lektura obowiązkowa dla ciebie
http://pl.php.net/manual/pl/language.types.string.php
korey
Yyy... tongue.gif Poproszę ze spolszczeniem ;p
nospor
Kurde.... odpisałes minutę po moim poscie. Nawet nie próbowałeś się wysilić...... a spolszczenie ci napisałem przecież!
Cytat
gdy uzywasz apostrofu jako oznaczenie tekstu, to nie mozesz potem w tekscie dac znowu ot tak sobie apostrof. Musisz uzyc \ czyli \'

Cytat
yy... tongue.gif Poproszę ze spolszczeniem ;p
Oczekujesz pomocy i pokazujesz język? Kultury trochę.
korey
Cytat(nospor @ 17.08.2010, 23:18:07 ) *
Oczekujesz pomocy i pokazujesz język? Kultury trochę.

tongue.gif <-- ten jezyk moze zrobić wiele dobrego biggrin.gif nie no zartuje taki nawyk.
powiedz no mi czy jak mam do wypełnienia tylko 4 kolumny na 10 to moze byćtak
  1. $sql ="....(NULL, $zmienna, $zmienna2, $zmienna3, $zmianna4)"; -- questionmark.gif




I czy ma jakies znaczenie ze dodałem indexy..?
nospor
jesli w insert nie okreslisz kolumn jakich bedziesz uzywal (patrz manual mysql) to musisz podac wszystkie wartosci, nawet jesli są puste.Indexy nie mają tu nic do rzeczy
korey
Na kombinowałem się troszkę i osiągnąłem efekt z takim kodem:

  1. error_reporting(E_ALL);
  2. ini_set('display_errors','1');
  3. //poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.) // Wysyłamy zapytanie do bazy danych
  4. $sql = "INSERT INTO `accounts` VALUES(NULL, '".$login."', '".sha1($haslo)."', '".$email."', '', '', '', '', '', '')";
  5. mysql_query($sql) or die('<br /><br /><b>ZAPYTANIE:</b> '.$sql.polskie_znaki('<b>BŁĄD:</b> '.mysql_error()));

powiedz co o tym myślisz.? nie ma żadnego błędu a jest nie co inaczej niz ty mowiles.
nospor
moze byc i tak.
Mi chodzilo o cos takiego: 'bla \'bla\' bla'
ty zrobiles tak:"bla 'bla' bla"
obie metody są dozwolone

ps: zakładam ze słyszałes o sqlinjection i jestes w stanie zabezpieczyc kod przed tym?
korey
Tak słyszałem o tym ale tak szczeze to nie wiem jak zabezpieczyć.. :/
PS to z \ \ to nie działało mi
IceManSpy
  1. $sql = "INSERT INTO `accounts` VALUES(NULL, '".$login."', '".sha1($haslo)."', '".$email."', '', '', '', '', '', '')";
Po co tak?
Jak chcesz zrobić inserta z $login itd to zrób tak:
  1. $hasło= sha1($haslo);
A potem:
  1. $sql = "INSERT INTO `accounts` VALUES(NULL, '$login.', '$haslo', '$email', '', '', '', '', '', '')";

Poza tym po co tak wypełniać puste pola? Zrób sobie takiego inserta, że jakąś zmienną wkłada do jakiejś kolumny:
  1. INSERT INTO table_name (column1, column2, column3,...)VALUES (value1, value2, value3,...)

Tylko jako robisz inserta w mój sposób, to stringi mają być w apostrofach np '$login' a liczby mają być bez nich np $cyferka.

O zabezpieczeniu poczytaj o funkcjach: htmlspecialchars, addslashes i stripslashes .
korey
te funkcje to ja znam tongue.gif
Ramzaa
IceManSpy, jak lubisz zużywać cenny czas wykonywania skryptu, to nikt Ci nie zabrania tak robić, ale innych nie pociągaj za sobą, bo złe nawyki potrafią nieźle namieszać, przez co później powstają bezsensowne tematy, że strona wolno się ładuje, że coś mi nie działa.
  1. $sql = "INSERT INTO `accounts` VALUES (NULL, '$login', '".sha1($haslo)."''')";

To jest jak najbardziej prawidłowe rozwiązanie i na pewno bardziej optymalne od Twojego.

A co do problemu autora, to rozwiązanie jest kilka postów wyżej smile.gif
IceManSpy
Ale na czym polega wolność skryptu? Że wcześniej do jakiejś zmiennej przypisujesz wynik z sha1? Poza tym co do zapytania, to sam autor wypełniał wszystkie kolumny pustymi znakami, zamiast określić do jakich kolumn ma wsadzić dane. A poniżej podałem mu sposób, jak dać do poszczególnych kolumn wartości.
korey
Jak dla mnie rozwiązanie jakie osiągnołem przy drobnej pomocy kubusia jest w pałni dobre, przetestowane i jak najbardziej dla mnie optymalne.

Temaz uważam za zamknięty. smile.gif

pozdro By Korey
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.