一个新手问题。对此肯定有一个简单的答案,但是我花了数小时进行搜索,包括在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中的每个产品名称和价格。
答案 0 :(得分:0)
函数中所有外部变量都是未知的,因此,最好将外部值作为参数传递:
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