4 месяца назад
NULL Warning: Trying to access array offset on value of type null in D:\Ampps\www\магазин\pr.php on line 19
123456789101112131415161718192021222324252627
<?php
include("application/db.php");
$id = $_GET['id'];
$product_query = 'SELECT * FROM merchendise WHERE `id` = "$id" ';
$result = mysqli_query($conn, $product_query) or die(mysql_error() ."<br/>". $sql);
$data = mysqli_fetch_row($result);
var_dump($data);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<?php echo($data['name']); ?>
</html>
хотя я проверял id выводится правильно
Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
123456789101112131415161718192021222324252627282930313233
<?php
include("application/db.php");
$id = $_GET['id'];
// Используйте параметризованный запрос для безопасности.
$stmt = $conn->prepare('SELECT * FROM merchendise WHERE id = ?');
$stmt->bind_param('i', $id); // Привязка параметра $id как целое число
$stmt->execute();
$result = $stmt->get_result();
$data = $result->fetch_assoc(); // Получение ассоциативного массива
if ($data) {
var_dump($data);
} else {
echo "Товар не найден!";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<?php if ($data): ?>
<h1><?php echo htmlspecialchars($data['name']); ?></h1>
<?php else: ?>
<p>Товар с ID <?php echo htmlspecialchars($id); ?> не найден.</p>
<?php endif; ?>
</body>
</html>
Вот так будет правильно!
Замени mysqli_fetch_row на mysqli_fetch_assoc.
mysqli_fetch_row возвращает массив с ЦЕЛОЧИСЛЕННЫМ индексами ($data[0], $data[1] и т.д.). А чтобы получить массив с индексами - именами полей таблицы ($data['name']), используется mysqli_fetch_assoc.
Круглые скобки после echo не нужны: echo - оператор, а не вызов функции:
1
<?php echo $data['name']; ?>
А ещё лучше в таком коде вообще не использовать echo, а применять специальный тег:
1
<?= $data['name'] ?>
https://www.php.net/manual/ru/language.basic-syntax.phptags.php
Больше по теме