PHP函数以数组形式获取数据并显示

PHP函数以数组形式获取数据并显示,php,function,mysqli,Php,Function,Mysqli,我从其他人的工作中得到了这段代码,用于从数据库中收集数据,并以最简单、最安全的方式显示数据,无需循环。然而,它并没有真正起作用,我想知道为什么? 所以我的主要问题是如何让它工作? 第2点:如何使其尽可能安全 显示数据的代码: <?php echo $webdata['web_name']; ?> 功能代码: function webdata($data) { $web_data = array(); $func_num_args = func_num_args();

我从其他人的工作中得到了这段代码,用于从数据库中收集数据,并以最简单、最安全的方式显示数据,无需循环。然而,它并没有真正起作用,我想知道为什么? 所以我的主要问题是如何让它工作? 第2点:如何使其尽可能安全

显示数据的代码:

<?php echo $webdata['web_name']; ?>
功能代码:

function webdata($data) {
    $web_data = array();
    $func_num_args = func_num_args();
    $func_get_args = func_get_args();

    global $db_connect;
    if ($func_num_args > 1) {
        unset($func_get_args[0]);
        $fields = '`' . implode('`, `', $func_get_args) . '`';

        $query = "SELECT $fields FROM `settings` WHERE id = 1";
        $result = $db_connect->query($query);
        while ($web_data = $result->fetch_assoc()) {
            return ($web_data);
        }
    }
}
  • 查询中没有
    数据
    变量。您有一个
    webdata
    变量,但是
相反:

while ($webdata = $result->fetch_assoc()) { return ($data); }
使用:

  • 您只需返回第一行,这是您想要的吗
  • 如果不使用$data变量,它应该用于什么

这是非常安全的:您没有任何方法将某些内容注入查询…

不幸的是,它不起作用,但是我已经更新了代码,您可能想现在检查它。您是否有理由将返回放入while循环中?您将返回第一排;在这种情况下,删除循环并让
return$result->fetch_assoc()更合理
@ChicagoRedSox感谢您的回复,但是我得到了这个错误:
致命错误:调用C:\WebServer\htdocs\peinture\u project\lib\functions\functions.php第26行的非对象上的成员函数fetch_assoc()
,这意味着我的查询失败了,但不知道为什么?但它没有在循环中给出错误?
var\u dump($result)
的输出是什么?它也给出了循环上的错误,给出了
bool(false)
确定,然后查询失败。即使它没有返回任何内容,它仍然会给出一个空的结果集。如果到了那一步,那么你就连接到数据库了。两件事:1。由于查询失败,因此应键入
if(!($result=$db\u connect->query($query))echo$db\u connect->error();
。错误消息是什么?2.
echo$query
并查看结果-由于所有其他内容都是硬编码的,
$fields
变量很可能存在问题。
while ($webdata = $result->fetch_assoc()) { return ($data); }
while ($webdata = $result->fetch_assoc()) { return ($webdata); }