通过阅读stackoverflow,我几乎解决了所有问题。但现在我有一个非常“特殊”的我无法解释。数小时的谷歌搜索和研究,但没有解决方案。
班级:
class Beitrag_Loeschen {
private $debug;
private $do_debug;
function __construct() {
$this->do_debug = TRUE;
}
function __destruct() {
if ($this->do_debug == TRUE) {
mysql_query("INSERT INTO `seite_log` (`id`, `timestamp`, `benutzer_ip`, `benutzer_id`, `datei`, `referrer`, `fehler`, `kommentar`) VALUES (NULL, UNIX_TIMESTAMP(), '', 1, '', '', '', '')");
}
}
private function _deleteDir($dir) {
// more code
}
// SQL-Query
private function _queryDelete($tabelle, $spalte, $id) {
$query = "DELETE FROM `".sql($tabelle)."` WHERE `".sql($spalte)."`='".sql($id)."';";
mysql_query($query);
$this->debug .= $query."<br/>";
}
private function _queryDeleteKat($tabelle, $kat, $kat_id) {
$query = "DELETE FROM `".sql($tabelle)."` WHERE `kat`='".sql($kat)."' AND `kat_id`='".sql($kat_id)."'";
mysql_query($query);
$this->debug .= $query."<br/>";
}
private function _seiteSuchbegriffe($ergebnis_typ, $ergebnis_id) {
$query = "DELETE FROM `seite_suchbegriffe` WHERE `ergebnis_id`='".sql($ergebnis_id)."' AND `ergebnis_typ`='".sql($ergebnis_typ)."'";
mysql_query($query);
$this->debug .= $query."<br/>";
}
// Kommentare
function bewertungKommentar($id) {
$this->_queryDelete('bewertungen_kommentare', 'id', $id); // bewertungen_kommentare
}
function fotoKommentar($id) {
$this->_queryDelete('fotos_kommentare', 'id', $id); // fotos_kommentare
}
function rezeptKommentar($id) {
$this->_queryDelete('rezepte_kommentare', 'id', $id); // rezepte_kommentare
}
// Bewertung
function bewertung($id) {
$this->_queryDelete('bewertungen_burger', 'id', $id); // bewertungen_burger
$this->_queryDelete('bewertungen_kommentare', 'bewertung_id', $id); // bewertungen_kommentare
// more code
}
// Foto
function foto($id) {
$this->_queryDelete('fotos_kommentare', 'foto_id', $id); // fotos_kommentare
// more code
}
// Burger
function burger($id) {
$this->_queryDelete('burger', 'id', $id); // burger
$this->_queryDeleteKat('benutzer_aktionen', 'favorit_burger', $id); // benutzer_aktionen
// more code
}
// Lokalität
function lokalitaet($id) {
$this->_queryDeleteKat('seite_korrekturen', 'lokalitaet', $id); // seite_korrekturen
$this->_queryDeleteKat('seite_hits', 'lokalitaeten', $id); // seite_hits
// more code
}
}
我的概念:如果你想,例如,删除一个位置,你必须从几个表中删除行。为此,我编写了这个小的 PHP 类。在删除这些东西时,在许多表中执行了许多 mysql 查询,因此我需要一种调试方法。
调试信息存储在 $debug 中。
$this->debug .= $query."<br/>";
最后,$debug 应该存储在数据库中(调用类后有一个“header(”Location:...“)”,所以我无法执行“echo”)。为此的数据库查询在析构函数中调用(信息:查询只是一个虚拟的。所以我可以避免查询语法没有问题):
function __destruct() {
if ($this->do_debug == TRUE) {
mysql_query("INSERT INTO `seite_log` (`id`, `timestamp`, `benutzer_ip`, `benutzer_id`, `datei`, `referrer`, `fehler`, `kommentar`) VALUES (NULL, UNIX_TIMESTAMP(), '', 1, '', '', '', '')");
}
}
这个类是这样调用的:
$del = new Beitrag_Loeschen();
$del->bewertungKommentar($id);
//header("Location: ".$referer);
问题:析构函数中似乎没有数据库连接,因为我一直收到这个错误:
Warning: mysql_query() [function.mysql-query]: Access denied for user ''@'localhost' (using password: NO) in /[...]/classes/beitrag_loeschen.inc.php on line 12
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /[...]/classes/beitrag_loeschen.inc.php on line 12
(第 12 行是析构函数中的 mysql_query)
我究竟做错了什么?类中的其他 mysql_query 运行良好。
谢谢!