• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program PHP nie łączy się z bazą

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
150 wizyt
pytanie zadane 3 listopada 2022 w PHP przez mrc Nowicjusz (200 p.)

Cześć,

Mam problem z systemem logowania napisanym w PHP. Mam postawione środowisko na XAMPP oraz phpMyAdmin. Przygotowałem mechanizm logowania zgodnie z instruktarzem Pana Mirosława z odcinka drugiego o PHP, jednak po wpisaniu danych logowania w formularzu nie otrzymuję odpowiedzi z bazy.

dbconnect.php
<?php

  $host = "localhost";
  $db_user = "root";
  $db_password = "";
  $db_name = "timeline";

 ?>



login.php
<?php

  include 'dbconnect.php';
  require_once "dbconnect.php";

  $connection = new mysqli($host, $db_user, $db_password, $db_name); //or die("Connect failed: %s\n". $conn -> error);

  if($connection->connect_errno!=0)
  {
      echo "Error: ".$connection->connect_errno;
  }
  else {
    $login = $_POST['login'];
    $password = $_POST['password'];

    $sql = "SELECT * FROM identity WHERE user='$login' AND pass='$password'";

    if($result = @$connection->query($sql))
    {
      $user_count = $result->num_rows;
      if($user_count>0)
      {
        $row=$result->fetch_assoc();
        $Login = $row['Login'];

        $result->free_result();

        echo $Login;
      }
      else
      {

      }
    }

    $connection->close();
  }

  $login = $_POST['login'];
  $password = $_POST['password'];

 ?>
komentarz 3 listopada 2022 przez wizarddos Pasjonat (24,600 p.)

Usuń @ z tej lini

$result = @$connection->query($sql)

i zobacz co wtedy otrzymasz

Przy okazji stosowanie @ jest złą praktyką a od PHP8 są już w ogóle nie wspierane

Warning

Prior to PHP 8.0.0, it was possible for the @ operator to disable critical errors that will terminate script execution. For example, prepending @ to a call of a function which did not exist, by being unavailable or mistyped, would cause the script to terminate with no indication as to why.

1 odpowiedź

+2 głosów
odpowiedź 3 listopada 2022 przez wizarddos Pasjonat (24,600 p.)
wybrane 3 listopada 2022 przez mrc
 
Najlepsza

Jak nazywa się pole w bazie z loginem - 'Login' czy 'user'?

 

$sql = "SELECT * FROM identity WHERE user='$login' AND pass='$password'";
 
    if($result = @$connection->query($sql))
    {
      $user_count = $result->num_rows;
      if($user_count>0)
      {
        $row=$result->fetch_assoc();
        $Login = $row['Login'];

W tym fragmencie musisz zmienić albo nazwę kolumny w zapytaniu na 'Login', albo wartość zmiennej $Login na $row['user]

2
komentarz 3 listopada 2022 przez mrc Nowicjusz (200 p.)
Dzięki, nie zauważyłem!

Problem leżał tylko w tym zapytaniu SQL. Kolumna nazywa się Login i Password.

Problem rozwiązany :)

Podobne pytania

+1 głos
1 odpowiedź 169 wizyt
0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 7 marca 2017 w C# przez PejtaM Użytkownik (550 p.)
+1 głos
2 odpowiedzi 191 wizyt
pytanie zadane 19 czerwca 2015 w PHP przez Piotr Czarnecki Nowicjusz (200 p.)

91,786 zapytań

140,452 odpowiedzi

316,848 komentarzy

61,134 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...