Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

NULL Warning: Trying to access array offset on value of type null in D:\Ampps\www\магазин\pr.php on line 19

Кирилл Семенов Ученик (142), закрыт 3 дня назад
 <?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 выводится правильно
Лучший ответ
_ Искусственный Интеллект (857568) 1 месяц назад
 <?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>
Вот так будет правильно!
Кирилл СеменовУченик (142) 1 месяц назад
спасибо
Остальные ответы
Андрей Высший разум (472509) 1 месяц назад
Замени mysqli_fetch_row на mysqli_fetch_assoc.

mysqli_fetch_row возвращает массив с ЦЕЛОЧИСЛЕННЫМ индексами ($data[0], $data[1] и т.д.). А чтобы получить массив с индексами - именами полей таблицы ($data['name']), используется mysqli_fetch_assoc.

Круглые скобки после echo не нужны: echo - оператор, а не вызов функции:
 <?php echo $data['name']; ?> 
А ещё лучше в таком коде вообще не использовать echo, а применять специальный тег:
 <?= $data['name'] ?> 
https://www.php.net/manual/ru/language.basic-syntax.phptags.php
Похожие вопросы