我在我的登录中使用PDO(之前通过sqli指示),我尝试了以下内容,但是我得到了这个致命错误,并且无法弄清楚要给它什么,所以它满足了错误:
if($query->rowCount() > 0) { // session stuff // refresh page }
然后我尝试了这个:
if($query->rowCount() == 1) { // session stuff // refresh page }
但我仍然得到这个:致命错误:在非对象上调用成员函数rowCount()
这是我在改变之前开始的:
$count = $query->rowCount();
最后,这是一个更好的代码片段,以便您可以了解所涉及的内容:
prepare("SELECT * FROM members WHERE username = ? OR email = ?"); $query = $query->execute(array( $username, $email )); $count = $query->rowCount(); if($count == 0) { $query = $dbc->prepare("INSERT INTO memebers SET username = ?, email = ?, password = ?"); $query = $query->execute(array( $username, $email, $password )); if($query) { echo "Your account has been registered, you may login!"; } } else { echo "A user already exists with that username/password."; } } else { echo "Your passwords do not match!"; } } else { echo "Invalid email address!"; } } ?>
任何人都可以指出我在这里出错的地方.这是我抛出的唯一错误.
您似乎$query
用布尔返回值覆盖execute()
,留下您尝试调用方法的非对象值(布尔值).
尝试这样的事情:
if($password == $confPassword) { $query = $dbc->prepare("SELECT * FROM members WHERE username = ? OR email = ?"); $result = $query->execute(array( $username, $email )); // check the value of $result is true here - if not, // your query has failed to execute and handle the error // appropriately. $count = $query->rowCount(); // ... }