-2

我在使用此准备和绑定时遇到问题。我已经尝试过用更少的变量绑定的同样的事情。我已经成功地使用仅 Fname、Lname、Password、$UserID 的 prepare 并使用带有 bind_param 对象的 sssi。在绑定代码中使用更多变量时,有人可以解释我做错了什么吗?使用下面的代码,它只会从 mysqli 打印出相同的数据,并且不会更新它。

if ($stmt = $con->prepare("UPDATE users SET Fname = ?, Lname = ?, Password = ?, UserLevel = ?, Email = ?, WHERE UserID= ?"))
{
    $stmt->bind_param("ssssssi", $firstname, $lastname, $PW, $UserLevel, $EM, $UserID);
    $stmt->execute();
    $stmt->close();
}
// show an error message if the query has an error
else
{
    echo "ERROR: could not prepare SQL statement.";
}

// redirect the user once the form is updated
header("Location: admin.php");
4

1 回答 1

1

虽然您没有指定使这变得棘手的数据类型,但我会冒险猜测。

Fname = s

Lname = s

Password = s

UserLevel = i(?)

Email = s

我在那里数 4 ,但你有6

尝试这个,

 $stmt->bind_param("sssisi", $firstname, $lastname, $PW, $UserLevel, $EM, $UserID);

编辑 1

正如@Fred-ii- 所说,您的 SQL 查询是错误的。

改变

"UPDATE users SET Fname = ?, Lname = ?, Password = ?, UserLevel = ?, Email = ?, WHERE UserID= ?"

至,

"UPDATE users SET Fname = ?, Lname = ?, Password = ?, UserLevel = ?, Email = ? WHERE UserID= ?"

你接受了培训,

于 2015-08-06T13:13:11.483 回答