Как вывести предмет из базы данных - PullRequest
1 голос
/ 25 февраля 2020

Я все еще учусь PHP, так что прости меня за плохой код. Я пытаюсь получить имя пользователя для вывода после того, как он вошел в систему, но ничего не возвращается, пожалуйста, можно мне помочь.

   <?php

session_start();

$DATABASE_HOST="localhost";
$DATABASE_USER="root";
$DATABASE_PWORD="";
$DATABASE_NAME="registration";

$connection=mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PWORD, $DATABASE_NAME);
if (mysqli_connect_errno()){
    //if there is an issue with connecting to the database, ends code and displays the error
    die("failed to connect to server: " .mysqli_connect_error()); //kills program
}

if (!isset($_POST['email'], $_POST['pswd'])){ //checking if both fields were inputted into on the form, isset()checks if data exists
    //unable to get data
    die("please fill in both email and password"); //kills program
}

$email = mysqli_real_escape_string($connection, $_POST['email']); //saves input as string, preventing misinterpretation
$password = mysqli_real_escape_string($connection, $_POST['pswd']);//saves input as string, preventing misinterpretation

$SQLstatement = "SELECT * FROM users WHERE email='$email' and password='$password'"; //querys the database for match

$Queryresult = mysqli_query($connection, $SQLstatement) or die(mysqli_error($connection)); //runs the query 

$rowsQueryResult = mysqli_num_rows($Queryresult);//number of 'emails' in database where the emails match
$dbFirstName=$rowsQueryResult ['firstName'];
    if ($rowsQueryResult==1){//if the number of emails where a match is made, is 1 
        echo "Welcome $dbFirstName <br/> ";
        echo "successful login. <a href='accountPage.php'>Click</a> here to access the accounts page";      //successful login, links to accounts page
        $_SESSION['firstName']=$dbFirstName;

    }else{ //if matches are 0 or >=2 
        die ('unsuccessful login'); //kills program
    }

?>

Спасибо за ваше время и помощь

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Функция mysqli_num_rows() возвращает количество строк в наборе результатов.

$rowsQueryResult = mysqli_num_rows($Queryresult);`

выдаст количество «электронных писем» в базе данных, где электронные письма совпадают.

Вам необходимо используйте mysqli_fetch_assoc() как

$row = mysqli_fetch_assoc($Queryresult);
$dbFirstName=$row['firstName'];
1 голос
/ 26 февраля 2020

Эту проблему можно решить с помощью функции mysqli_fetch_assoc() вместо mysqli_num_rows(). Тем не менее, я бы порекомендовал вам использовать PDO, поскольку он проще в реализации и более читабелен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...