给定 ID,如何获取未知用户名?

Mar*_*175 4 php session mysqli

我得到了一个 20 个字符的数字 ID,看起来像10527391670258314752,给定这个 ID,我怎样才能获得与之关联的用户名?

该表如下所示:

id                   | name | password | balance   
10527391670258314752 | Jhon | 12345    | 12.51
Run Code Online (Sandbox Code Playgroud)

然后,从数据库中检索到的用户名应存储到$_SESSION['name'].

我试过这个:

$connection = mysqli_connect('localhost', 'root', '', 'user_data');
$id = '10527391670258314752';

$query = "SELECT username FROM user_data WHERE id = '$id'";
$result = mysqli_query($connection, $query);

$record = mysqli_fetch_array($id);
$_SESSION['id'] = $record;

echo $_SESSION['id'];
Run Code Online (Sandbox Code Playgroud)

输出是Array()而不是名称。

You*_*nse 5

这实际上是一个很好的问题,在 Stack Overflow 上几乎没有好的答案。

基本上,您需要以下步骤来使用 mysqli 执行 SELECT 查询:

  • 创建一个正确的 SQL SELECT 语句并用问号(称为占位符或参数)替换查询中的所有变量
  • 准备结果查询
  • 将所有变量绑定到之前准备好的语句
  • 执行语句
  • 从语句中获取 mysqli 结果变量。
  • 获取你的数据

详细解释可以在我的文章中找到,如何使用 Mysqli 运行 SELECT 查询,以及一个帮助函数来简化例程。

遵循这个计划,这里是你的代码

$sql = "SELECT * FROM users WHERE id=?"; // SQL with parameters
$stmt = $conn->prepare($sql); 
$stmt->bind_param("s", $id);
$Stmt->execute();
$result = $stmt->get_result(); // get the mysqli result
$user = $result->fetch_assoc(); // fetch the data 
Run Code Online (Sandbox Code Playgroud)

现在您可以将用户名存储在会话变量中:

$_SESSION['name'] = $user['name'];
Run Code Online (Sandbox Code Playgroud)