【问题标题】:Getting the result of an SQLite query for PHP获取 PHP 的 SQLite 查询结果
【发布时间】:2017-03-14 23:25:16
【问题描述】:

我正在尝试使用下面的查询从我的数据库中获取用户 ID,以将其插入到其他位置。我是 php 和 sql 的新手,所以我无法真正发现问题所在。我在 var_dump() 上得到的结果是 object (SQLite3Result)#4 (0) { } - 我只将它用于测试。我尝试使用 fetchArray() 但它仍然没有得到任何东西。数据库工作正常,我用它做其他事情。

    require 'database.php';     
    $db = new Database();
    $email = $_POST['member'];
    $list = $db->prepare('SELECT userid FROM users WHERE (email = :email)');
    $list->bindValue(':email', $email, SQLITE3_TEXT);
    $q = $list->execute();

    var_dump($q);

感谢您的帮助!

【问题讨论】:

  • 你能告诉我们 $db 等于什么吗?另外,你从 lastErrorMsg 得到什么吗? php.net/manual/en/sqlite3.lasterrormsg.php
  • 我只使用了我实际代码的摘录,抱歉,如果它令人困惑,我现在对其进行了编辑。不幸的是,移除括号并没有解决问题。我测试了数据库和我从提交表单中收到的电子邮件,它们工作正常。

标签: php mysql database sqlite


【解决方案1】:

你可以这样做:

<?php

class UserDB extends SQLite3
{
    function __construct()
    {
        $this->open('test.db');
    }
}

$db = new UserDB();
$stmt = $db->prepare('SELECT * FROM users where email = :email');
$stmt->bindValue(':email', 'user1@example.com', SQLITE3_TEXT);
$result = $stmt->execute();
var_dump($result->fetchArray());

然后您可以使用 email 变量更新 bindValue 方法调用。

对于 sqlite3 db,我使用以下命令创建它:

$ sqlite3 test.db
CREATE TABLE USERS (
ID INT PRIMARY KEY NOT NULL,
EMAIL TEXT NOT NULL
);
INSERT INTO USERS VALUES(1, 'user1@example.com');
.quit

然后你可以在我的代码中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多