我是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");
}
?>
$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.