我有一个与 mysql
数据库一起使用的 PHP 登录脚本,当我尝试将它与 SQLite3
数据库一起使用时,出现以下错误
Fatal error: Call to undefined method SQLite3Stmt::fetchArray() in C:\xampp\htdocs\xport\login.php on line 13
session_start();
require_once ("db.php");
$db = new MyDB();
if (!empty($_POST['log_name']) && !empty($_POST['log_password']))
{
$records = $db->prepare('SELECT userid, regas, uemail, uname, pword FROM users WHERE uname = :uname');
$records->bindParam(':uname', $_POST['log_name']);
$records->execute();
$result = $records->fetch(PDO::FETCH_ASSOC);
//Tried this to
//$result = $records->fetchArray(SQLITE3_ASSOC);
if (count($result) > 0 && password_verify($_POST['pword'], $result['pword']))
{
$_SESSION['log_id'] = $id;
$_SESSION['log_name'] = $username;
$_SESSION['regas'] = $regas;
$_SESSION['uemail'] = $uemail;
header('Location: index.php?log_id="'.$id.'"');
}
else
{
echo 'Username or password incorrect!';
}
}
请问使用 SQLite3
的这段代码有什么问题以及如何修复。谢谢。
最佳答案
根据手册(您应该阅读),SQLite 的 execute()
返回 SQLite3Result
类型的对象,您可以通过迭代来获取数据。
所以,改进的部分代码是:
$records = $db->prepare('SELECT userid, regas, uemail, uname, pword FROM users WHERE uname = :uname');
$records->bindParam(':uname', $_POST['log_name']);
$stmt_result = $records->execute();
// also remove PDO::FECTH_ASSOC as you don't use PDO
// can use SQLITE3_ASSOC or SQLITE3_BOTH or SQLITE3_NUM
$result = $stmt_result->fetchArray();
// test what you have
print_r($result);
关于php - 使用 SQLite3 数据库的 PHP 登录脚本的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45402823/