Не уверен, почему вы пытаетесь сделать это на уровне приложения.MySQL предоставляет возможность удалять дочерние строки, используя ограничения внешнего ключа (ON DELETE CASCADE).Проверьте свою текущую схему и посмотрите, доступны ли они уже:
mysql> show create table child_table;
Если доступно ограничение внешнего ключа, вы должны увидеть что-то вроде:
CONSTRAINT `constraint_id` FOREIGN KEY (`some_id`) REFERENCES `some_table` (`id`) ON DELETE CASCADE
Что это означает, если выудалить строку из «some_table», все строки в «child_table», которые ссылаются на тот же идентификатор, что и «some_table», будут автоматически удалены.
http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html для получения дополнительной информации.
Если вам нужно сделать это на уровне приложения, вам следует рассмотреть транзакцию, я полагаю, вы используете PDO, хотя она может работать с mysqli.Ниже приведено потенциальное решение, поэтому я не несу никакой ответственности за возможную потерю данных.
$this->db->beginTransaction();
try {
$this->db->execute('DELETE FROM table_1 WHERE id = 65');
$this->db->execute('DELETE FROM table_2 WHERE rela = 65');
$this->db->execute('DELETE FROM table_3 WHERE h_id = 11');
$this->db->execute('DELETE FROM table_4 WHERE rela = 65');
$this->db->execute('DELETE FROM table_5 WHERE h_id = 11');
$this->db->commit();
} catch (Exception $e) {
error_log($e->getMessage());
$this->db->rollBack();
$e = null; // PHP is notorious for not cleaning exceptions very well so force it
}