php - 我的社交网络中的用户无法注册和登录

标签 php mysql sql select authentication

我做了一个简单的社交网络系统,具有注册和登录功能,但是当用户注册并尝试登录时,他给出以下消息:

fatal error :在 home/login.php 第 7 行的非对象上调用成员函数 rowcount()

我正在使用 PDO 连接。

我的login.php代码有问题吗?:

<?php
include('dbcon.php');
$username = $_POST['username'];
$password = $_POST['password'];

$query = $conn->query("select * from database where username = '$username' and password = '$password'");
$count = $query->rowcount();
$row = $query->fetch();
if ($count > 0){
session_start();
$_SESSION['id'] = $row['member_id'];
 header('location:home.php'); 
}else{
 header('location:index.php'); 
}
?>

最佳答案

我假设您使用的是PDO,并且rowcount方法不存在,但另一方面有一个rowCount方法。请记住这些是区分大小写的。

<?php
include('dbcon.php');
$username = $_POST['username'];
$password = $_POST['password'];

$stm = $conn->prepare("select * from database where username = ? and password = ?");
$stm->execute(array($username, $password));
$count = $stm->rowCount();
$row = $stm->fetch(PDO::FETCH_ASSOC);
if ($count > 0) {
    session_start();
    $_SESSION['id'] = $row['member_id'];
    header('location:home.php'); 
} else {
    header('location:index.php'); 
}
?>

这应该可以解决问题。
PDOStatement::rowCount

我还编辑了您的查询,以便它使用带有占位符的准备好的语句,这将保护您免受 SQL Injection 的影响。 .

关于php - 我的社交网络中的用户无法注册和登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29866377/

相关文章:

php - 保存后 Laravel 模型 ID 为空(ID 递增)

java - SQL Server JDBC 的 table.field 表示法?

sql - 如何从数据库中删除几乎相同记录的连续序列

php - 输出连接表

php - 在更新值之前获取 mysql 表中值的差异

PHP - Mysql 选择与或

mysql - Sequelize 使用 postgres 方言添加双列

sql - 选择所有不在 postgres 表中的整数

php - 如何在 YII 上设置 CGridView 的分页样式?

php - 如何从一列中获取唯一值并将它们与另一列中的值分组?