【发布时间】:2020-09-09 17:38:52
【问题描述】:
我希望在表中找到用户名,并获取完整的名字和姓氏,连接并绑定到一个变量 ($usernames)。这是一个较大的登录文件的代码 sn-p,其中定义了 $link 等,并且连接正常:
$param_username = "x";
$users_fname = $users_sname = "";
$sql = "SELECT users_fname, users_sname FROM users WHERE users_username = ?";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "s", $param_username);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $users_fname, $users_sname);
$usernames = $users_fname . $users_sname;
$_SESSION["username"] = $usernames;
echo $_SESSION["username"];
谁能发现我可能做错了什么?
当直接在数据库上运行时,正在执行的语句似乎返回行/列就好了,即:
SELECT users_fname, users_sname FROM users WHERE users_username = 'x';
【问题讨论】:
-
绑定结果后需要在while循环中使用mysqli_stmt_fetch($stmt)获取结果。请参阅此处的示例 #2 程序样式:php.net/manual/en/mysqli-stmt.bind-result.php THEN 学习面向对象的样式并开始这样做。
-
我发现人们普遍认为
PDO比mysqli_*更易于使用。如果你很难掌握mysqli_*,我建议切换到PDO。 -
你永远不会从服务器获取任何东西。您必须使用
get_result()才能获得结果。 -
感谢大家,代码现在可以工作,但我正在寻找 PDO 和面向对象作为处理更大代码部分的更好方法,我很快就会需要!
标签: php mysql mysqli prepared-statement