Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodawanie nicku do osobnej tabeli (PDO)
Piffek
post 22.09.2016, 08:08:30
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 22.09.2016

Ostrzeżenie: (0%)
-----


Witam. Mam problem, mianowicie, logowanie działa bez zarzutu, lecz nie widzi funkcji dodającej nick do tabeli 'Kiedy'. Co jest tego przyczyną?

  1. function form(){
  2. echo '
  3. <form action="" method="post">
  4. <label for="nick">Login</label>
  5. <input type="text" name="nick" required>
  6. <br>
  7. <label for="haslo">Hasło</label>
  8. <input type="password" name="haslo" required>
  9. <br>
  10. <input type="submit" name="wyslano" value="Zaloguj się"/>
  11. </form>
  12. ';
  13. }
  14. //Połączenie z bazą danych MySQL PDO
  15. $db = new PDO(' array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
  16.  
  17. if(isset($_POST['wyslano'])){ //Sprawdzamy, czy submit został wciśnięty
  18. //Usuwamy białe znaki z przesłanych danych
  19. $nick = trim($_POST['nick']);
  20. $haslo = trim($_POST['haslo']);
  21. $data = date('Y-m-d');
  22.  
  23. $stmt = $db->prepare("SELECT * FROM uzytkownicy WHERE nick=:nick AND haslo=:haslo");
  24. $stmt->bindValue(":nick", $nick, PDO::PARAM_STR);
  25. $stmt->bindValue(":haslo", $haslo, PDO::PARAM_STR);
  26. $stmt->execute();
  27. echo $stmt->fullQuery;
  28. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  29. if($stmt->rowCount()!=0){
  30. echo "Zalogowałeś się!";
  31. session_start();
  32. $_SESSION['zalogowany'] = true;
  33. $_SESSION['nick'] = $row['nick'];
  34. header('Location:pologowaniu.php');
  35. dodajlogin($nick);
  36. }
  37. else{
  38. echo '<div style="color:red">Login i/lub hasło są nieprawidłowe</div>';
  39. form();
  40. }
  41. }
  42. else form();
  43.  
  44. function dodajlogin($nick)
  45. {
  46. $db = new PDO('', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
  47. $stmt=$db->prepare('INSERT INTO Kiedy (nick) VALUES (:nick)');
  48. $stmt=bindParam(':nick',$_SESSION['nick'],PDO::PARAM_STR);
  49. $stmt->execute();
  50. }


Ten post edytował Piffek 22.09.2016, 08:08:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
viking
post 22.09.2016, 08:26:19
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Rozumiem że DSN wyciąłeś z tego kodu? Kiedy jest z dużej litery i masz to poprawnie zapisać `Kiedy`. I wywal to or die().


--------------------
Go to the top of the page
+Quote Post
Piffek
post 22.09.2016, 08:37:38
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 22.09.2016

Ostrzeżenie: (0%)
-----


Dalej to samo. Nawet jak dodam wywołanie funkcji z 'Kiedy' po header, to nie wyświetla się formularz logowania.

Ten post edytował Piffek 22.09.2016, 08:42:14
Go to the top of the page
+Quote Post
viking
post 22.09.2016, 08:42:29
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Cytat
For most databases, PDOStatement::rowCount() does not return the number of rows affected by a SELECT statement.


--------------------
Go to the top of the page
+Quote Post
Piffek
post 22.09.2016, 08:45:52
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 22.09.2016

Ostrzeżenie: (0%)
-----


Rozumiem, czyli co zamiast rowCount() warto zastosować?
Go to the top of the page
+Quote Post
viking
post 22.09.2016, 09:02:57
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Masz w dokumentacji dalej wszystko napisane. Dodatkowo fetch zwraca wynik albo false co możesz sprawdzić.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 10:30