从php中获取sqlite3数据库中的数据

时间:2017-07-24 15:53:37

标签: php mysql sqlite

我的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中输出它们。 / p>

您能帮我解决一下如何获取数据库中的匹配数据吗?

1 个答案:

答案 0 :(得分: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注入!