PHP,PDO,表单,更新用户类不按预期工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP,PDO,表单,更新用户类不按预期工作相关的知识,希望对你有一定的参考价值。
我有一个php用户类来添加,删除,更新用户。在更新函数上它没有返回任何错误,它返回成功但实际的数据库值没有改变。
有任何想法吗?
这是我的user.class.php文件。
public function userUpdate($id, $fname, $lname) {
$pdo = $this->pdo;
if (isset($id) && !empty($id) && isset($fname) && !empty($fname) && isset($lname) && !empty($lname)) {
$stmt = $pdo->prepare('UPDATE users SET fname = ?, lname = ? WHERE id = ?');
if ($stmt->execute([$id, $fname, $lname])) {
$this->msg = 'User name was successfully updated!';
return true;
}
else
{
$this->msg = 'User name failed to update!';
return false;
}
}
else
{
$this->msg = 'Data lost or not set!';
return false;
}
}
这是我的update.func.php文件。
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['uid']) && !empty($_POST['uid']) &&
isset($_POST['fname']) && !empty($_POST['fname']) && isset($_POST['lname']) && !empty($_POST['lname'])) {
$id = filter_input(INPUT_POST, 'uid', FILTER_DEFAULT);
$fname = filter_input(INPUT_POST, 'fname', FILTER_SANITIZE_STRING);
$lname = filter_input(INPUT_POST, 'lname', FILTER_SANITIZE_STRING);
if ($user->userUpdate($id, $fname, $lname)) {
header('Location: https://domain/update.php?result=pass&message=' . $user->getMsg());
exit;
}
else
{
header('Location: https://domain/update.php?result=fail&message=' . $user->getMsg());
exit;
}
}
else
{
header('Location: https://domain/update.php?result=fail&message=' . $user->getMsg());
}
}
else
{
header('Location: https://domain/update.php?result=fail&message=' . $user->getMsg());
}
答案
您在执行此处时以错误的顺序传递参数:
$stmt = $pdo->prepare('UPDATE users SET fname = ?, lname = ? WHERE id = ?');
if ($stmt->execute([$id, $fname, $lname])) {
您需要将它们传递为:
$stmt = $pdo->prepare('UPDATE users SET fname = ?, lname = ? WHERE id = ?');
if ($stmt->execute([$fname, $lname, $id])) {
以上是关于PHP,PDO,表单,更新用户类不按预期工作的主要内容,如果未能解决你的问题,请参考以下文章