«Неопределенная переменная», когда функция php выбирает из значения данных mysql - PullRequest
0 голосов
/ 19 сентября 2018

Вопрос новичка.Должен быть простой ответ на этот вопрос, но я потратил часы на поиск, в том числе здесь, в StackOverflow (также в Duplicate Questions), но безрезультатно.Пожалуйста, помогите.

У меня есть таблица внутри базы данных, которую я пытаюсь перебрать.

Упрощенная таблица выглядит следующим образом:id (int, автоинкремент), product_name (varchar), price1 (int)

1, widget1, 10002, widget2, 900и т. д.

, когда я использую этот код, он работает

    <?php
    $connection = mysqli_connect("localhost", "root", "", "test");

    $item = 'widget1';
    $sql = "SELECT * FROM gym_eqpt WHERE product_name = '$item' ";
    $results = mysqli_query($connection, $sql);
    while($result = mysqli_fetch_array($results)) {
    echo "<p>item name: " . ($result['product_name']) . "<br />" . "<p>item price: " . number_format($result['price1']) . " </p>";
}
?>

Однако, когда я пытаюсь использовать тот же код внутри функции, возникает ошибка «Неопределенная переменная».

<?php
function iteratePrice($item) {
    $sql = "SELECT * FROM gym_eqpt WHERE product_name = '$item' ";
    $results = mysqli_query($connection, $sql);
    while($result = mysqli_fetch_array($results)) {
    echo "<p>item name: " . ($result['product_name']) ."<p>item price: " . number_format($result['price1']) . " </p>";
    }   
}

iteratePrice('widget1');
?>

В конце концов, я хотел бы использовать эту функцию в разных HTML-элементах на одной странице, вызывая каждое название продукта и цену в каждом элементе.

1 Ответ

0 голосов
/ 19 сентября 2018

Все внешние переменные неизвестны внутри функции, поэтому будет лучше, если вы передадите внешние значения в качестве параметров:

function iteratePrice($connection, $item) {
    $sql = "SELECT * FROM gym_eqpt WHERE product_name = '$item' ";
    $results = mysqli_query($connection, $sql);
    while($result = mysqli_fetch_array($results)) {
    echo "<p>item name: " . ($result['product_name']) ."<p>item price: " . number_format($result['price1']) . " </p>";
    }   
}

, а затем вызовете его как:

iteratePrice($connection, 'widget1');

Thisдокументация по функциям и области применения php: http://php.net/manual/en/language.variables.scope.php

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