检查PHP和sqlite是否存在记录

时间:2015-11-21 15:13:36

标签: php sqlite authentication

我对编程完全不熟悉(通常我是系统管理员),但现在我必须做一个可以注册和登录的项目,使用PHP和SQLite(没有其他选择)。
我需要得到一个我可以进行查询的声明:

  

是否有名为$_POST['username']

的用户

使用SQLite。 我只是不明白......我发现了一些文章,但没有一篇能真正帮助我。

这是我的代码:

$db = new PDO('sqlite:mysqlitedb.db');

$sql_create_table_users = 'CREATE TABLE IF NOT EXISTS users (
    user_id INTEGER PRIMARY KEY,
    user_name TEXT,
    user_password TEXT
    )';
$db->execute($sql_create_table_users);

$username = $_POST['username'];

$sql_checkuserexist = 'SELECT * FROM users WHERE user_name = :user_name';

$stmt = $db->prepare($sql_checkuserexist);
$stmt->execute(array(':user_name'=>$username));
$result = $stmt->fetchAll();

if (count($result) > 0) {
    echo 'Exists';
} else {
    echo 'Does not exist';
}

但是我在这里得到了这个错误:

  

致命错误:调用未定义的方法SQLite3Stmt :: exec()

此错误显示在我所在的行

  

$ stmt->执行(阵列(':USER_NAME' = GT; $用户名));

有谁知道为什么?我的桌子名为"用户"并且有3行:user_id,user_name和user_password。

@Kostas:这是我给你的当前代码(我只使用此代码atm):

try {
//Make your connection handler to your database
$db = new PDO('sqlite:mysqlitedb.db');
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql_create_table_users = 'CREATE TABLE IF NOT EXISTS users (
    user_id INTEGER PRIMARY KEY,
    user_name TEXT,
    user_password TEXT
    )';
$stmt->execute($sql_create_table_users);

$sql = "SELECT * FROM users WHERE user_name = :username";
//Prepared statements so no SQL Injection occurs
$stmt = $db->prepare($sql);
//Execute your query
$stmt->exec(array(':username'=>$_POST['username']));
$result = $stmt->fetchAll();
if (count($result) > 0) {
    echo 'Exists';
} else {
    echo 'Does not exist';
}

} catch(PDOException $e) {
echo $e->getMessage();
die();
}

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码。您可以找到其他信息here

false