当php函数从mysql数据值中选择时,“未定义的变量”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当php函数从mysql数据值中选择时,“未定义的变量”相关的知识,希望对你有一定的参考价值。

一个新手问题。必须有一个简单的答案,但我花了几个小时搜索,包括StackOverflow(也在重复问题),无济于事。请帮忙。

我在数据库中有一个表,我试图迭代。

简化表如下: id(int,auto-increment),product_name(varchar),price1(int)

1,widget1,1000 2,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 div中使用此函数,在每个div中调用每个产品名称和价格。

答案

函数内部的所有外部变量都是未知的,因此如果将外部值作为参数传递会更好:

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');

这是关于php函数和范围的文档:http://php.net/manual/en/language.variables.scope.php

以上是关于当php函数从mysql数据值中选择时,“未定义的变量”的主要内容,如果未能解决你的问题,请参考以下文章

PHP MySQL数据库二

为啥调用未定义函数时没有 PHP 错误?

调用未定义的函数 mysql_connect

在 VBA 中访问选择组合框列返回“函数未定义”-错误

从mysql中的值中选择

从 PHP 数组中选择 MYSQL 数据