我正在尝试通过 cookie 从信息中获取表行中的数据。
这是我到目前为止所拥有的:
$cookie_id = @$_COOKIE['id'];
$cookie_pass = @$_COOKIE['password'];
if ($_COOKIE['id']) {
if ($stmt = mysqli_prepare($mysqli, "SELECT id, password FROM `members` WHERE id=? AND password=?")) {
mysqli_stmt_bind_param($stmt, "ss", $cookie_id, $cookie_pass);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $cookie_id, $cookie_pass);
$logged = mysqli_stmt_fetch($stmt);
printf("USER ID: %s\n", $cookie_id);
// prints "1"
echo "Hello, " . $logged['username'] . "!";
}
}
结果是:页面最顶部的USER ID: 1 Hello, !
。
我做错了什么?我正在尝试获取它,以便我可以从我尝试查找的表行中获取用户名。 如何根据密码和 ID 显示 $logged['username'](或行中的任何数据)?
并添加 error_reporting(E_ALL);
不会显示任何其他错误。
最佳答案
您只需从表中选择密码
和id
,因此当您获取数据时,您将不会获得用户名
一般语法是
SELECT col1,col2, .... coln FROM `members` WHERE id=? AND password=?
您必须使用*
来指定要选择的列
你的流程应该是这样的:
if ($stmt = mysqli_prepare($mysqli, "SELECT id, password , username FROM `members` WHERE id=? AND password=?")) {
mysqli_stmt_bind_param($stmt, "ss", $cookie_id, $cookie_pass);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $cookie_id, $cookie_pass, $username);
printf("Hello %s", $username);
}
您可以引用documentation
关于php - MySQLi 准备语句给出空白响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827522/