在 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中从mysql数据库中获取货币符号[重复]

在 PHP 中从数据库获取日期到 jQuery Ui Picker

如何在 JavaScript ajax 调用中从 PHP passthru 获取二进制数据?

如何在 QT C++ 中从表的列中获取 SQL 中的所有值

在 PHP 中从 JSON 中提取数据失败

在 PHP CodeIgniter foreach 循环中从数据库中提取和更新数据