Корректность подготовленного запроса

Рейтинг: 0Ответов: 1Опубликовано: 11.01.2015

Корректен ли данный подготовленный запрос?
Имею 4 таблицы, в первой

News(id,id_owner,date_add,for)   
News_RUS(id,title,annon,text)  
News_ENG(id,title,annon,text)   
News_UKR(id,title,annon,text)

При удалении новости нужно удалить во всех таблицах, я решил сделать это так, но как-то слишком много кода...

public function delNews()
{
    $table = 'News';
    $stmt = $this->link->prepare("DELETE FROM $table WHERE $table.ID = ?");
    $stmt->bind_param('i',$_POST['id_news']);
    $stmt->execute();
    $stmt->free_result();

    $table = 'News_RUS';
    $stmt = $this->link->prepare("DELETE FROM $table WHERE $table.ID = ?");
    $stmt->bind_param('i',$_POST['id_news']);
    $stmt->execute();
    $stmt->free_result();

    $table = 'News_ENG';
    $stmt = $this->link->prepare("DELETE FROM $table WHERE $table.ID = ?");
    $stmt->bind_param('i',$_POST['id_news']);
    $stmt->execute();
    $stmt->free_result();

    $table = 'News_UKR';
    $stmt = $this->link->prepare("DELETE FROM $table WHERE $table.ID = ?");
    $stmt->bind_param('i',$_POST['id_news']);
    $stmt->execute();
    $stmt->free_result();
    }

Можно как-то сделать его меньше, или это норма?

Ответы

▲ 2Принят
$tables = array('News', 'News_RUS', 'News_ENG', 'News_UKR',);
foreach ($tables as $table) {
    $stmt = $this->link->prepare("DELETE FROM $table WHERE $table.ID = ?");
    $stmt->bind_param('i', $_POST['id_news']);
    $stmt->execute();
    $stmt->free_result();
}

понятия не имею, что такое link, и сработает ли с 'i'.