php - 使用 SQLite3 数据库的 PHP 登录脚本的问题

标签 php mysql sqlite

我有一个与 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/

相关文章:

android - SQLite 选择所有行并添加到 ListView Android

php - 如何在 Magento 2 的产品详细信息页面中使用产品 id 获取类别集合

php - 获取特定页面 ID 的唯一访客计数 - php

php - CodeIgniter 中的方法 Post 和 Get

mysql查询输出投影仪和白板

javascript - ChartJS x 轴仅显示一年中的月份

php "continue"似乎不工作

PHP Codeigniter 错误:调用未定义的方法 ci_db_mysql_driver::result()

mysql - 共享主机 + Entity Framework + MySQL = 数据提供者错误?

c - 从sql表达式中提取表