从PHP打开SQLITE数据库并将结果报告到HTML页面的问题

问题描述 投票:0回答:1

我是PHP新手。我需要打开一个数据库并删除一个条目,但是如果它不存在,我不想创建一个新的数据库。如果不存在,我想向查询源自的HTML页面返回错误。

问题是都不是

   echo "Unable to open database\n";

也不

echo "entry deleted\n";

也不是

alert("entry deleted");

尽管已成功删除条目,但在浏览器的控制台或网页上显示。我在Mac上使用Safari。 HTML页面日志显示在控制台上,而PHP页面日志则没有。如果从PHP页面调用警报,也不会弹出警报。

我想完全控制操作成功/不成功,以便可以将此信息反馈到HTML页面,并可以相应地触发其他方法。任何帮助,将不胜感激!谢谢

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('myDb.db');
      }
   }
   $db = new MyDB();
   if(!$db)
   {
       echo "Database does not exist";

   } else {
      echo "Opened database successfully\n";

       //Do something (delete entry)    

       echo "entry deleted\n";
       alert("entry deleted");
   }
?>
php
1个回答
0
投票

$db将始终是MyDB类的实例,由于它始终是真实的,因此无法真正在if中进行评估。因此,代码echo "Database does not exist";永远不会运行。

此外,php不会输出到浏览器控制台。而且php中没有内置的alert函数(但不确定是否在其他地方定义了该函数)。

从文档开始,SQLite3::open不返回任何内容,并且如果无法打开数据库也不会抛出异常。文档说,如果SQLite3::__construct无法连接,则会引发异常,因此您应坚持该原则(并且不要使用class MyDB中的SQLite3::open示例)。


try {
    $db = new SQLite3();

    echo "Opened database successfully\n";

    //Do something (delete entry)    

    echo "entry deleted\n";
} catch (\Exception $e) {
    // database does not exists
    ...
}

Would need to check your `//Do something (delete entry)` code to be sure that it's not returning earlier.
© www.soinside.com 2019 - 2024. All rights reserved.