在PHP中创建安全的sqlite3连接(Create safe sqlite3 connection in PHP)
我想创建一个用户登录/注册,但我认为当我这样做时它不是很安全:
$db = new PDO('sqlite:mydatabase.sqlite3');
$users = $db->query("SELECT * FROM users");
$userlist = Array();
foreach($users as $user)
{
$userlist[] = $user['name'];
}
创建安全连接的最佳方法是什么?
I want to create a user login/register but I think it is not really safe when I'm doing this:
$db = new PDO('sqlite:mydatabase.sqlite3');
$users = $db->query("SELECT * FROM users");
$userlist = Array();
foreach($users as $user)
{
$userlist[] = $user['name'];
}
What's the best way to create a safe connection?
原文:https://stackoverflow.com/questions/35998251
更新时间:2019-12-03 06:20
最满意答案
It is totally safe. But if you want to add parameters to the query, you can use prepared statements:
2016-03-14
相关问答
编辑:这个答案是过时的,但不能被删除,因为它被接受。 请参阅Stacey Richards的解决方案,以获得正确答案。 sudo apt-get install php5-cli php5-dev make
sudo apt-get install libsqlite3-0 libsqlite3-dev
sudo apt-get install php5-sqlite3
sudo apt-get remove php5-sqlite3
cd ~
wget http://pecl.php
...
这是完全安全的。 但是,如果要向查询添加参数,可以使用预准备语句: http://php.net/manual/en/pdo.prepared-statements.php It is totally safe. But if you want to add parameters to the query, you can use prepared statements: http://php.net/manual/en/pdo.prepared-statements.php
你应该获取结果: var_dump($result->fetchArray());
You should fetch the results: var_dump($result->fetchArray());
SQLite是一个嵌入式数据库引擎,因此除了sqlite3扩展外,没有什么需要安装的。 打开数据库非常简单: <?php
$db = new SQLite3('my_database_file.db');
SQLite is an embedded database engine, so there's nothing you need to install except the sqlite3 extension. Opening the database is as simple as: <
...
您需要在使用-cp选项编译和运行类时在类路径中显式提供sqlite-jdbc-3.7.2.jar文件。 java和javac命令只查找类路径中的.class文件而不是jar。 尝试这个 : javac -cp ;. .java 如果您有多个第三方库,则可以使用通配符: javac -cp ;. .java 注意; 是Windows中
...
在控制器的顶部,您可以看到其他使用指令,添加以下声明: Use SQLite3;
Laravel由PSR-4命名空间驱动,它基本上指向一个目录结构中的文件,因此不同的库可以拥有相同的类名,而不必踩在彼此的脚趾上。 除非您声明SQLite类的名称空间,否则它认为该类与您的控制器位于同一个文件夹中,因为这是您从中调用它的地方。 PHP中包含的SQLite3类具有一个以“SQLite3”开头的名称空间,因此通过声明顶部的任何对该类的引用都会指向正确的脚本。 At the top of your con
...
驱动程序文件应命名为dbo_sqlite3.php 。 您可以从GitHub下载最新版本 。 您的数据库配置可能如下所示: var $default = array(
'driver' => 'sqlite3',
'database' => 'database.sqlite'
);
CakePHP将在app / webroot中查找数据库文件。 您可以使用相对于webroot目录的绝对路径或路径。 例如,如果您宁愿将数据库存储在app目录中(从webroot向上一级),您可以编写
...
让您的数据库库为您完成。 PHP Sqlite3库支持预准备语句 : $stmt = $db->prepare('SELECT bar FROM foo WHERE id=:id');
$stmt->bindValue(':id', 1, SQLITE3_INTEGER);
Get your database library to do it for you. The PHP Sqlite3 library supports prepared statements: $stmt = $db->p
...
(只是复制我的评论,解决了@ reverendocabron的问题,以便于参考。) $ flags参数应该是SQLITE3_OPEN_READONLY , SQLITE3_OPEN_READWRITE和/或SQLITE3_OPEN_CREATE (其值分别为1,2和4),而你给它一个Unix风格的0666参数。 在你的情况下,我猜你正在寻找的是SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE SQLITE3_OPEN_READWRITE | SQLITE3_
...
如果你只想获得第一行,那么就不需要使用循环了。 $result=$dbhandle->query("select * from table");
if ($result) {
$row = $result->fetch(PDO::FETCH_ASSOC);
echo "
";
print_r($row);
echo "
";}
更新:获取所有行。 $result=$dbhandle->query("select * from table");
$rows =
...