Ошибка неопределенной переменной в моем php-коде

Я новичок в php, и я пытаюсь получить название продукта из моей таблицы продуктов базы данных и сохраняю эти данные в массиве $ product. Я получаю ошибку

count (): параметр должен быть массивом или объектом, который реализует Countable в C: \ xampp \ htdocs \ moed \ cart.php в строке 57

$sqlprod = "SELECT pname FROM products limit 10";
$sqlprice = "SELECT price FROM products limit 10";
$result = $conn->query($sqlprod);
$result1 = $conn->query($sqlprice);

if ($result->num_rows And $result1->num_rows > 0) {
$products = array();
$amounts = array();
while($row = mysql_fetch_assoc($sqlprod)){
$products[] = $row;
}
while($row1 = mysql_fetch_assoc($sqlprice)){
// add each row returned into an array
$products[] = $row1;
}
}

// I am getting error of undefined variable products at the for loop below
if ( !isset($_SESSION["total"]) ) {
$_SESSION["total"] = 0;
for ($i=0; $i< count($products); $i++) {
$_SESSION["qty"][$i] = 0;
$_SESSION["amounts"][$i] = 0;
}
}

-1

Решение

Ваш код полностью испорчен.

Нет необходимости в нескольких запросах, просто сделайте один запрос, который выбирает оба столбца. Вы все еще можете сохранить каждый столбец в отдельном массиве, если хотите.

Когда вы получаете, вам нужно использовать $resultне $sqlprod,

Поскольку вы используете mysqli расширение, вам нужно использовать mysqli_fetch_assoc()не mysql_fetch_assoc(), Но так как вы используете стиль ОО, было бы лучше использовать $result->fetch_assoc(),

Вы ставили цены в $productsне $amounts,

Вам не нужен цикл для создания массива с одинаковыми элементами несколько раз, вы можете использовать array_fill() за это.

$sqlprod = "SELECT pname, price FROM products limit 10";
$result = $conn->query($sqlprod);

$products = array();
$amounts = array();
while($row = $result->fetch_assoc()){
$products[] = $row['pname'];
$amounts[] = $row['price'];
}

if ( !isset($_SESSION["total"]) ) {
$_SESSION["total"] = 0;
$_SESSION['qty'] = $_SESSION['amounts'] = array_fill(0, count($products), 0);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]