自定义PHP函数出错:未返回任何变量

时间:2014-05-16 04:27:45

标签: php mysqli

好的,所以这里是我的PHP函数。我可以确认我已连接到数据库,因为我可以直接在文件中使用mysqli_query函数对其进行更新。

<?php
function username_from_id($id) {
$id = mysqli_real_escape_string($id);
$query = mysqli_query($d,"SELECT `username` FROM `users` WHERE `id` = '$id'");
$result = mysqli_fetch_array($query);
$res = $result['username'];
return $res;
}
?>

该功能的目的是选择用户的用户名,如果他们的ID等于放入查询的ID,然后返回。在文件中,它看起来像这样

<?php
include 'file_where_function_is.php';
$id = '1';
echo username_from_id($id);
?>

什么都没有出现。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

正如评论中所指出的,这是一个范围问题。您的$d变量(mysqli实例)不在username_from_id范围内。以下是如何修复它......

function username_from_id(mysqli $d, $id) {
    if (!$stmt = $d->prepare('SELECT username FROM users WHERE id = ? LIMIT 1')) {
        throw new Exception($d->error, $d->errno);
    }
    $stmt->bind_param('i', $id);

    if (!$stmt->execute()) {
        throw new Exception($stmt->error, $stmt->errno);
    }

    $stmt->bind_result($username);

    if ($stmt->fetch()) {
        return $username;
    }
    return null;
}

并像这样称呼它

include 'file_where_function_is.php';
$id = 1;
echo username_from_id($d, $id); // assuming $d exists in this scope