【发布时间】:2016-02-24 00:28:09
【问题描述】:
我对编程完全陌生(通常我是系统管理员),但现在我必须做一个项目,您可以在其中使用 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->execute(array(':user_name'=>$username));
有人知道为什么吗?我的表名为“users”,有 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();
}
【问题讨论】:
-
您需要建立数据库连接。
-
更改为:$db = new PDO('sqlite:mysqlitedb.db');
-
没有改变任何东西......仍然有这个错误
-
对于执行准备好的语句也可以使用'execute'函数。
-
检查sqlite扩展是否在服务器上。
标签: php sqlite authentication