gpt4 book ai didi

php - 更新 mysql 表时出现 ServerError 500

转载 作者:行者123 更新时间:2023-11-29 11:40:43 25 4
gpt4 key购买 nike

所以问题是,每当用户按下登录时,我想创建数据库中的值更改为 1,但是每当我使用 UPDATE 时,我们都会在单击登录时收到服务器错误 500

<?php
require("inc/db.php");
ini_set('error_reporting', 0);
ini_set('display_errors', 0);

session_start();

if(isset($_POST['submit'])){
$errMsg = '';
//username and password sent from Form
$username = trim($_POST['username']);
$password = trim($_POST['password']);

if($username == '')
$errMsg .= 'You must enter your Username<br>';

if($password == '')
$errMsg .= 'You must enter your Password<br>';


if($errMsg == ''){
$records = $conn->prepare('SELECT id,username,password,email,bday,points,uid FROM users WHERE username = :username AND password = :password');
$records->bindParam(':username', $username) ;
$records->bindParam(':password', $password) ;
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);

if($results > 0){

$sql = "UPDATE users SET isloggedin = :isloggedin WHERE username = :username";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':isloggedin', '1');
$stmt->execute();


$_SESSION['username'] = $results['username'];
$_SESSION['id'] = $results['id'];
$_SESSION['points'] = $results['points'];
$_SESSION['uid'] = $results['uid'];





header('location:dashboard.php');
}else{
$errMsg .= 'Username and Password are not found<br>';
}
}
}
?>

所以,更新功能无法正常工作,我和我的 friend 找不到解决方案,我们尝试解决它,或者尝试更改它的线路,但没有任何效果......

提前致谢!

最佳答案

存在一些问题,一旦出现错误报告,这些问题就会一次出现一个。在开发和测试代码时,始终将 error_reporting 设置为 E_ALL,并使用 ini_set('display_errors', 1) 启用显示错误。这些一起将为您详细介绍屏幕上的 500 错误,使其立即变得更加明显。

我发现的第一个问题是您的 UPDATE 语句有两个参数 :isloggedin, :username 但只有第一个参数与 bindParam() 绑定(bind)。您还必须绑定(bind)第二个,因为 PDO 会引发与无效参数号相关的异常。

  $sql = "UPDATE users SET isloggedin = :isloggedin WHERE username = :username";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':isloggedin', '1');
$stmt->bindParam(':username', $username);
$stmt->execute();

但这只能让你完成一半。由于在 bindParam() 中使用静态字符串值 '1',PDO 将出现下一个错误,该值仅接受变量作为其第二个参数(因为它通过引用使用它们) )。另一种方法是使用 bindValue() 传递静态值。由于您不会通过更改变量值多次执行相同的语句,因此将 :usernamebindValue() 绑定(bind)也是安全的,尽管这两种方式都可以工作针对您的情况。

  $sql = "UPDATE users SET isloggedin = :isloggedin WHERE username = :username";
$stmt = $conn->prepare($sql);
// Make sure static values are bound by value
$stmt->bindValue(':isloggedin', '1');
$stmt->bindValue(':username', $username);
$stmt->execute();

关于php - 更新 mysql 表时出现 ServerError 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35820906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com