Хорошо, так вот посмотрите на мою 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; } ?>
Цель этой функции – выбрать имя пользователя, если их идентификатор равен тому, что помещается в запрос, а затем вернуть его. В файле это выглядит так:
<?php include 'file_where_function_is.php'; $id = '1'; echo username_from_id($id); ?>
Ничего не видно. Есть идеи?
Как отмечалось в комментариях, это вопрос, охватывающий вопросы. Ваша переменная $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