【发布时间】:2016-03-05 22:52:05
【问题描述】:
所以问题是,每当用户按下登录时,我想创建数据库中的值更改为 1,但每当我使用 UPDATE 时,单击登录时都会得到 servererror 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>';
}
}
}
?>
所以,UPDATE 功能不能正常工作,我和我的朋友找不到解决方案,我们试图解决它,或者尝试改变它的行,但没有任何效果......
提前致谢!
【问题讨论】:
-
我不使用 PDO,但我猜你需要在每个查询中绑定 :username 参数。服务器 500 错误让我觉得您可能将其作为 CGI 运行?
-
你怎么称呼这个例程?阿贾克斯?错误 500 通常意味着 PHP 语法错误或者它期望的发布数据没有被正确传递。
-
我注意到您没有
bindParam(':username', $username),因此我怀疑 PDO 抛出异常是由于 SQL 语句中的参数数量与execute()中实际可用的参数数量不一致。 -
没有显示任何内容,当我将错误报告和显示错误放在网站上时,甚至无法访问 login.php,但立即显示 500 错误。当我点击登录时出现错误
-
@MichaelBerkowski $stmt->bindParam(':username', $username);我补充说,仍然是错误 500
标签: php mysql server-error