Невозможно получить и отобразить данные с помощью php

#php #mysql #sql #mysqli

#php #mysql #sql #mysqli

Вопрос:

Я пытаюсь показать имя пользователя, идентификатор электронной почты, но каждый раз показываю «1» в качестве вывода. Где бы я ни пытался получить и показать значение, оно показывает только 1 в качестве вывода.

База данных :

 CREATE TABLE `admin` (
  `id` int(11) NOT NULL,
  `username` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `created_at` datetime DEFAULT current_timestamp(),
  `email` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  

PHP-код :

 <?php
session_start();

if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;
}
?>
<?php
require_once('config/config.php');
//Counting Member
$members = "SELECT count( * ) as  id FROM admin";
$member_result = $mysqli->query($members);
$total_member = mysqli_num_rows($member_result);
//Showing Admin Name
$admin_name = "SELECT `name` FROM `admin` WHERE id='1'";
$name_result = $mysqli->query($admin_name);
$name_sh = mysqli_num_rows($name_result);
//Showing Email
$admin_email = "SELECT `email` FROM `admin` WHERE id='1'";
$email_result = $mysqli->query($admin_email);
$email_sh = mysqli_num_rows($email_result);
?>
  

config.php

 <?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'test1');

$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
?>
  

HTML-код :

                                     <div class="account-dropdown js-dropdown">
                                        <div class="info clearfix">
                                            <div class="image">
                                                <a href="#">
                                                    <img src="images/icon/avatar-01.jpg" alt="John" />
                                                </a>
                                            </div>
                                            <div class="content">
                                                <h5 class="name">
                                                    <a href="#"><?php echo $name_sh; ?></a>
                                                </h5>
                                                <span class="email"><?php echo $email_sh; ?></span>
                                            </div>
                                        </div>
  

Вместо значения отображается только 1.
Заранее спасибо

Комментарии:

1. mysqli_num_rows вернет число rows , и вы присваиваете это своей переменной $name_sh , и $email_sh поэтому она показывает целочисленное значение

2. В SQL нет необходимости заключать целочисленные литералы в одинарные кавычки. Это для строковых литералов.

3. Вы можете получить оба значения в 1 select.

Ответ №1:

Это потому, что вы отображаете результат mysqli_num_rows , который возвращает количество строк в результате (и поэтому всегда равно 1).

Используйте вместо mysqli_stmt_fetch этого для получения результата запроса.

Ответ №2:

 $admin_name = "SELECT `name` FROM `admin` WHERE id='1'";
$name_result = $mysqli->query($admin_name);
$result=mysqli->fetch_array($name_result,MYSQLI_ASSOC);