Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie danych z mysql
Forum PHP.pl > Forum > Przedszkole
Kedi
Witam,
Chciałem pobrać informację z bazy danych czy wartość jest równa 0 lub 1

Jeśli mamy 0


  1. if ($rezultat = $conn->query(
  2. sprintf("SELECT postac FROM users WHERE login='%s'",
  3. mysqli_real_escape_string($conn,$username))))
  4. {
  5. $postac = $rezultat->num_rows;
  6. if($postac == 0)
  7. {
  8. header('Location: index.php?page=stworz');
  9. }


zaś jeśli zwraca nam 1 to

  1. else{
  2. $_SESSION['loggedin'] = $username;
  3. header('Location: index.php?page=gra');
  4. }


Ale cały ładuje mi się else, mimo, że w db w tabeli users oraz w kolumnie postac jest sztywno ustawione 0.

Jakieś sugestie ?
nospor
Mowisz o tym
$postac = $rezultat->num_rows;
?
To sprawdz co to zawiera

$postac = $rezultat->num_rows;
var_dump($postac);
exit;

No chyba ze ELSE podpiales pod to
($rezultat = $conn->query(
? No to wtedy zapytanie zwraca blad. No ale ciezko powiedziec jak zamiast calego kodu podajesz wycinki i zgaduj zgadula....
Kedi
Cytat(nospor @ 2.09.2019, 17:53:30 ) *
Mowisz o tym
$postac = $rezultat->num_rows;
?
To sprawdz co to zawiera

$postac = $rezultat->num_rows;
var_dump($postac);
exit;

No chyba ze ELSE podpiales pod to
($rezultat = $conn->query(
? No to wtedy zapytanie zwraca blad. No ale ciezko powiedziec jak zamiast calego kodu podajesz wycinki i zgaduj zgadula....



D:\wamp\www\strony\gra.php:61:int 1

  1. <?php
  2. global $tytul;
  3. global $separator;
  4. global $description;
  5.  
  6. ?>
  7.  
  8. <html>
  9. <head>
  10.  
  11. <title><?php echo $tytul.$separator.$description;?> </title>
  12. <script src="design/js/script.js"></script>
  13. <link href="https://fonts.googleapis.com/css?family=EB+Garamond&display=swap" rel="stylesheet">
  14. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  15. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  16. <link href="design/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
  17. <link rel="stylesheet" type="text/css" href="../design/css/style.css">
  18. <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  19. <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
  20. <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  21. </head>
  22. <body>
  23.  
  24. <div class="wrapper">
  25. <?php require_once("temp/header.php"); ?>
  26. <div class="layer">
  27. <div class="menu">
  28. <?php require_once("temp/menu.php"); ?>
  29. </div>
  30. </div>
  31. <div class="layer">
  32. <div class="content">
  33. <fieldset>
  34. <center><legend>Logowanie</legend></center>
  35. <form role="form" method="post">
  36. <div class="form-group">
  37. <label for="username">Nazwa Postaci:</label>
  38. <input type="text" class="form-control" id="username" name="login" required />
  39. </div>
  40.  
  41. <div class="form-group">
  42. <label for="password">Wprowadź hasło:</label>
  43. <input type="password" class="form-control" id="password" name="haslo" required />
  44. </div>
  45. <button type="submit" class="btn btn-outline-success" name="send">Zaloguj się</button>
  46. </form>
  47.  
  48. <?php
  49.  
  50. function inject_checker ($conn, $field){
  51. return (htmlentities(trim(mysqli_real_escape_string($conn, $field))));
  52. }
  53.  
  54. $dbserver = "localhost";
  55. $dbusername = "root";
  56. $dbpassword = "";
  57. $db = "game";
  58.  
  59. $conn = new mysqli($dbserver, $dbusername, $dbpassword, $db);
  60. $conn -> query ('SET NAMES utf8');
  61. $conn -> query ('SET CHARACTER_SET utf8_unicode_ci');
  62.  
  63. //Sprawdza Połączenie
  64. if ($conn->connect_error)
  65. {
  66. die("Połączenie nie udane z bazą dany.".$conn->connect_error);
  67. }
  68.  
  69. if(isset($_POST['send'])){
  70. $username = inject_checker($conn, strtolower($_POST['login']));
  71. $password = inject_checker($conn, $_POST['haslo']);
  72. $haslo_hash = password_hash($password, PASSWORD_DEFAULT);
  73.  
  74.  
  75.  
  76. if ($rezultat = $conn->query(
  77. sprintf("SELECT * FROM users WHERE login='%s'",
  78. mysqli_real_escape_string($conn,$username))))
  79. {
  80. $ilu_userow = $rezultat->num_rows;
  81. if($ilu_userow == 1)
  82. {
  83. $wiersz = $rezultat->fetch_assoc();
  84.  
  85. if (password_verify($password, $wiersz['haslo']))
  86. {
  87.  
  88. if ($rezultat = $conn->query(
  89. sprintf("SELECT postac FROM users WHERE login='%s'",
  90. mysqli_real_escape_string($conn,$username))))
  91. {
  92. $postac = $rezultat->num_rows;
  93. if($postac == 0)
  94. {
  95. header('Location: index.php?page=stworz');
  96. }else{
  97.  
  98. $_SESSION['loggedin'] = $username;
  99. header('Location: index.php?page=gra');
  100. }
  101. }
  102. else
  103. {
  104. ?> <div class="alert alert-danger" role="alert">
  105. <center>Podane dane są błędne!</center>
  106. </div> <?php
  107. }
  108.  
  109. }
  110. }
  111. }
  112. }
  113.  
  114.  
  115. ?>
  116.  
  117. </fieldset>
  118. </div>
  119. </div>
  120. <?php require_once("temp/footer.php"); ?>
  121. </div>
  122. </body>
  123. </html>
nospor
Zrobiles var_dump jak prosilem?
Kedi
Cytat(nospor @ 2.09.2019, 17:59:49 ) *
Zrobiles var_dump jak prosilem?


Tak, napisałem co zwraca linię nad kodem. ( inna nazwa ponieważ skopiowałem tylko zawartość login do innego php.)

Nie ważnę jaką wartość ustawię w db zawsze zwraca 1
viking
A sprawdziłeś w dokumentacji co zawiera num_rows? Bo na pewno nie jest to pole z bazy. I czemu tak mieszasz kod obiektowy ze strukturalnym? Zamiast mysqli_real_escape_string użyj bindowania.
dublinka
po co 2 razy to ?

  1. sprintf("SELECT postac FROM users WHERE login='%s'",


pomyliles where z like
nospor
Cytat
pomyliles where z like
Oj chyba tobie sie cos teraz pomylilo wink.gif
dublinka
Cytat(nospor @ 2.09.2019, 18:53:35 ) *
Oj chyba tobie sie cos teraz pomylilo wink.gif

a no tak smile.gif sprintf. sorki.

  1. <?php
  2. function query($host, $user, $pwd, $database, $table)
  3. {
  4. $mysqli = new mysqli($host, $user, $pwd, $database);
  5. if($mysqli->connect_error) {
  6. exit('Błąd polączenia z MySQL');
  7. }
  8.  
  9. $mysqli->set_charset("utf8");
  10.  
  11. $loginf = 'qqq2'; // login z forma
  12. $haslof = 'qwerty2'; // haslo z forma
  13.  
  14. $stmt = $mysqli->prepare("SELECT id, login, haslo, postac FROM $table WHERE login = ?");
  15. $stmt->bind_param("s", $loginf);
  16. $stmt->execute();
  17. $stmt->store_result();
  18. $stmt->bind_result($id, $login, $haslo, $postac);
  19. $stmt->fetch();
  20.  
  21. if($stmt->num_rows === 1)
  22. {
  23.  
  24. if (password_verify($haslof, $haslo))
  25. {
  26. if($postac == 0)
  27. {
  28. echo 'Postac ma wartosc: ' . $postac;
  29. exit;
  30.  
  31. header('Location: index.php?page=stworz');
  32. }else{
  33.  
  34. echo 'Postac ma wartosc: ' . $postac;
  35. exit;
  36.  
  37. $_SESSION['loggedin'] = $loginf;
  38. header('Location: index.php?page=gra');
  39. }
  40.  
  41. } else {
  42.  
  43. exit('Błędne hasło');
  44.  
  45. }
  46.  
  47. } else {
  48.  
  49. echo $stmt->num_rows . ' wyników';
  50.  
  51. }
  52.  
  53. $stmt->close();
  54. }
  55. query('localhost', 'root', 'haslo', 'nazwabazy', 'nazwatabeli');
  56.  
  57.  
  58. ?>
nospor
@dublinka jaki sens ma twoja funkcja? To jest jakis groch z kapusta. Czemu tam sa przekazywane wszystkie dane do polaczenia? Czemu ta funkcja tworzy nowe polaczenie za kazdym razem jak jest wywolywana?
Czemu tam jest jako parametr nazwa tabeli? A jak sie kod rozrosnie w niej i bede zapytania do dwoch tabel? Kolejny parametr dodasz?
Rozumiem chec pomocy ale nie ucz ludzi pisac tak nieoptymalnych rzeczy.
dublinka
To jest tylko przyklad jak mozna zrobic to na czym koledze zalezy.
Jesli ktos chcialby bardzo zeby to przerabiac dla dalszego kodu to oczywiscie trzeba to pozmieniac. Parametry podalem ot tak jak i nazwe tabeli.
Zalozeniem bylo pokazanie jak dobrac sie do rekordu POSTAC i to bylo najwazniejsze. Reszta to ogolny zarys.
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.