Проблемы с mysqli_fetch_array () ожидают, что параметр 1 будет mysqli_result - PullRequest
0 голосов
/ 11 февраля 2019

Получая эту ошибку, не знаю, что ее вызывает.проверил другие ответы на эту ошибку, но не может заставить ее работать.Любая помощь приветствуется

<?php
session_start();

include ('includes/header.html');

if ( isset($_GET['id'])) $id = $_GET['id'];

  require ('../connect_db.php');
$q = "SELECT * 
    FROM books_for_sale 
    WHERE book_id = $id";
$r = mysqli_query($dbc, $q);
if (mysqli_num_rows($r) == 1 )
{$row = mysqli_fetch_array($r, MYSQLI_ASSOC);


if (isset($_SESSION['cart'][$id]))
{
    $_SESSION['cart'][$id]['quantity']++;
    echo '<p>Another' .$row["book_name"]. 'has been added</p>';
}
else
{
    $_SESSION['cart'][$id]=
    array ( 'quantity' => 1, 'price' => $row['item_price']);
    echo '<p>1 '.$row["item_name"]. 'has been added to your order</p>';
}


}

mysqli_close($dbc);
include('includes/footer.html');
?>

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Я думаю, что ваш запрос выбора не работает.

Я рекомендую экранировать ваш суперглобальный ($ _GET ['id']) на filter_input(INPUT_GET, 'id', FILTER_SANITIZE_SPECIAL_CHARS);.Также у вас есть значение по умолчанию для $ id?Это может быть причиной его поломки.

Ваш запрос может быть

$q = "SELECT * FROM books_for_sale ".(isset($id) ? "WHERE book_id = ".(int)$id : "");

0 голосов
/ 11 февраля 2019

Причина ошибки заключается в том, что '$ id' не заключен в одинарные кавычки.

Кроме того, вы берете значения из форм / получения представлений и помещаете их непосредственно в запрос MySQL без какой-либо стороны сервера.проверка правильности данных.Это очень небезопасно, поскольку позволяет злоумышленнику внедрить код в запрос mysql.

Вам нужно использовать «подготовленные операторы», чтобы вы могли заранее определить на стороне сервера, какой тип значений можно использовать в запросе mysql.Таким образом, если получено неверное значение формы, php сможет обнаружить его и вернуть ошибку.

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