Hallo!
Welche MySQL-Version verwendest Du? Das ist bei MySQL immer eine wichtige Frage. Komplexere Joins zum Beispiel werden erst in der Version 5.0.1 bzw. sogar 5.0.12 richtig verarbeitet, auch wenn es in Deinem Fall nach einem "einfachen" Mehrtabellen-Join aussieht, den sogar eine 3.23.x schon hinkriegt.
$sql = "DELETE tbl1., tbl2., tbl3., tbl4. FROM tbl1, tbl2, tbl3, tbl4 WHERE tbl1.id_gast = $guestId AND tbl2.id = $guestId AND tbl3.id_gast = $guestId AND tbl4.id_gast = $guestId;";
PHP-Code ist bei SQL-Fragen höchst irrelevant. Poste besser reinen SQL-Code.
Das Handbuch, Abschnitt [Delete-Syntax](http://dev.mysql.com/doc/refman/5.0/en/delete.html) hilft Dir weiter. Weiterhin lesenswerte Lektüre sind die Artikel
[Einführung Joins](http://aktuell.de.selfhtml.org/artikel/review/datenbanken/joins/)
[Fortgeschrittene Joins](http://aktuell.de.selfhtml.org/artikel/review/datenbanken/fortgeschrittene-joins/)
> dieser befehl funktioniert, aber nur, wenn in allen Tabellen (tbl1, tbl2, tbl3, tbl4) Einträge mit id\_gast = $guestId existiert, falls nicht, gibt mir mysql\_query zwar TRUE zurück, aber es wird kein Eintrag gelöscht.
Du suchst unter anderem den `LEFT JOIN`{:.language-sql}.
> Ist es möglich überhaupt möglich diesen Befehl so anzuwenden, oder sollte ich 4 eigenständige befehle schreiben?
Eine weitere Möglichkeit, die Dir die InnoDB-Engine zur Verfügung stellt - und bei nahezu allen anderen Datenbankmanagementsystemen (DBMS), die ich kenne - wäre die Verwendung von [Foreign-Key-Constraints](http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html) mit Löschweitergabe: `ON DELETE CASCADE`{:.language-sql}.
Freundliche Grüße
Vinzenz