【发布时间】:2013-12-14 16:21:32
【问题描述】:
我只是创建一个简单的登录脚本来检查用户名/密码,如果与数据库匹配,那么它将登录。我想我有大部分,它打开数据库,从登录中获取用户名/密码。我想我也设置了我的查询,它抓住了用户名和密码。我将如何比较它?我已经坚持了很长一段时间。我的 fetch 也无法正常工作,它给了我一个错误。我对 SQLite/Databases 很陌生,所以这可能看起来很糟糕的代码,但我正在尽我所能。
<?php
//opens database
class MyDB extends SQLite3
{
function __construct()
{
$this->open('UserAccounts.db');
}
}
$db = new MyDB();
//username and pw from index.html
$user = $_REQUEST['myusername'] ;
$pw = $_REQUEST['mypassword'] ;
//if there is a database, it opens.
if(!$db){
echo $db->lastErrorMsg();
} else {
//Test to see if things are working correctly.
echo "Opened database successfully\n";
echo "$user";
echo "$pw";
}
$result = $db->query("SELECT * FROM login WHERE user = '$user' AND password = '$pw'");
if ($result->fetchColumn() == $user) {
$_SESSION['loggedin'] = true;
echo "Success";
};
if(!$_SESSION['loggedin']){
echo "Didn't Work";
exit;
};
【问题讨论】:
-
你得到什么错误? SQLite3 类没有函数:fetchColumn() 需要用到这些函数之一php.net/manual/en/class.sqlite3result.php
-
致命错误:在第 28 行的 /Applications/XAMPP/xamppfiles/htdocs/hcc-master/checklogin.php 中调用未定义的方法 SQLite3Result::fetchColumn()说它不存在。我真的不知道发生了什么。大声笑
-
我最终使用 fetchArray() 应该可以工作。我现在只需要比较它们。查询如何工作?在该行之后,它实际上是否匹配用户名和密码,还是我必须进行 while 循环并将其与每个用户名和密码进行比较?
-
你不需要比较它们,你只需要知道你真的得到了一个结果......因为数据库正在做比较。