在 php 中从 sqlite3 数据库中获取数据
Posted
技术标签:
【中文标题】在 php 中从 sqlite3 数据库中获取数据【英文标题】:Fetching the data from sqlite3 database in php 【发布时间】:2017-07-24 15:53:37 【问题描述】:我的 php 需要一些帮助。我在从数据库中获取数据时遇到了麻烦。我聘请了一位 PHP 开发人员,他的工作做得不好,他弄乱了代码,使其无法正常工作,所以我需要一些帮助来解决问题以使其再次工作。
当我尝试这个时:
//open the database File
$db = new SQLite3('myChannel.db');
if(!$db)
echo $db->lastErrorMsg();
else
$channel_name = $_GET['channels'];
$sql ="SELECT channel, title, start_date, stop_date, description FROM programs WHERE channel='$channel_name'";
$results = $db->query($sql);
while ($row = $results->fetchArray())
print_r($row);
代码发生的情况是它不会从数据库中获取匹配的数据,因为它不会做任何事情。我认为 $sql 变量有问题。
我希望做的是在我使用名为$channel_name
的变量的数据库中查找数据,然后我想获取匹配的数据以将它们输出到我的 PHP 中。
你能帮我如何在数据库中获取匹配的数据吗?
【问题讨论】:
这个myChannel.db
文件是否和运行代码在同一目录下?
您的 print_r() 中显示了什么?它是显示一些数据还是空的?
@GrumpyCrouton 是的
@rowmoin 当我尝试它时它在 print_r 中没有显示任何内容
在您的数据库中,该值存在您尝试测试时传递的内容?
【参考方案1】:
根据SQLite PHP docs试试这个代码
class MyDB extends SQLite3
function __construct()
$this->open('myChannel.db');
$db = new MyDB();
if (!$db)
echo $db->lastErrorMsg();
else
$channel_name = $_GET['channels'];
$sql = "SELECT channel, title, start_date, stop_date, description FROM programs WHERE channel='$channel_name'";
$results = $db->query($sql);
while($row = $results->fetchArray(SQLITE3_ASSOC) )
print_r($row);
我改变了一些东西。我把你的数据库连接变成了一个类,我改变了你的时间以包括SQLITE3_ASSOC
。
警告:OP 的代码,因此这个答案的代码是 易受 SQL 注入攻击!
【讨论】:
@grumptycrouton 你不需要类 MYDB 函数,你可以使用像$channel_name = $_GET['channels'];
这样的东西,所以你写的代码很糟糕......
@RobertJones 你写的东西与数据库连接无关。我没有改变$channel_name
的设置方式。我所做的只是根据我链接到的文档更改数据库的处理方式,我知道这很有效,因为我在很多应用程序中使用它。
您没有修复 SQL 注入。
@CL。我没有尝试,这不是问题的一部分。修复 OP 的安全漏洞不是我的工作。以上是关于在 php 中从 sqlite3 数据库中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中从数据库获取日期到 jQuery Ui Picker