我有一个名为choice.php的php文件,其中我在其中回显了一些HTML,即select元素。
我正在使用PDO从mysql数据库中填充select元素。
我编写的代码可以完美地工作,但是当我将其放入函数中并尝试调用它时,我收到一条错误消息,告诉我无法再次声明所述方法。
因此,代码是:
echo '<select>';
$sql = "SELECT name FROM people";
$res = $conn->prepare($sql );
$res ->execute();
while ( $row = $res ->fetch() )
{
echo '<option value = "' . $row['name '] . '">' . $row['name '] . '</option>';
}
echo '</select>';
换句话说,该函数将如下所示:
function getnames()
{
$sql = "SELECT name FROM people";
$res = $conn->prepare($sql );
$res ->execute();
while ( $row = $res ->fetch() )
{
echo '<option value = "' . $row['name '] . '">' . $row['name '] . '</option>';
}
}
为什么我不能在回显的选择元素内调用该方法?
echo '<select>';
getnames();
echo '</select>';
另外,我将如何将该方法放置在另一个php文件中以使其保持整洁呢?
为什么我不能在回显的选择元素内调用该方法?
因为方法主体引用$conn
,所以应该是全局变量,而不是方法主体内部的范围。您可以验证这是问题所在(并“修复”)
function getnames()
{
global $conn;
// the rest as before
}
现在,尽管这将使问题消失,但您在此处提出的建议并不是组织事物的好方法。有几个问题:
getnames
使用全局变量(“不可见参数”)-请注意,如果此问题已得到纠正,您将没有理由问这个问题!<select>
标记)与业务逻辑(查询数据库)交织在一起。最好预先进行所有业务逻辑(将所需的结果保留在变量中),然后一次性完成HTML。以上所有都是所选方法的严重缺陷,并且在完善的应用程序中都不会出现这些缺陷。我建议您最好通过重构代码来解决这些问题,而不是使问题消失,并且问题会自动解决。
代码审查将是一个很好的场所,它可以按照“我有此代码和此建议-我将如何正确实施?”的方式提出问题。如果您需要其他帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句