#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);