Q:

Не могу разобраться с записью в базу данных

html    
</div>
<iframe style="display: none;" name="h_iframe" width="1" height="1"></iframe>

<form action="" method="post" name="img_upload" enctype="multipart/form-data" target="h_iframe">
    <div id="imageId">
    </div>
    <p><input type="file" name="upload_photo" onchange="img_upload.submit();" /></p>
</form>
<div id="image_upload_status"></div>

module 
public function upload(){

    if (is_uploaded_file($_FILES['upload_photo']['tmp_name']))
    {
        // загружаем изображение на сервер, если оно соответствует требованиям (формат: gif/jpeg/png и размер файла ~ 500 kB)
        if ( ( $_FILES['upload_photo']['type'] == 'image/jpeg') && $_FILES['upload_photo']['size'] <= 512000 )
        {
            $upload_photo= $_FILES['upload_photo']['name'];
           $puth = copy($_FILES['upload_photo']['tmp_name'],"image/uploads/".uniqid($upload_photo). '.jpeg');
            echo "<script type=\"text/javascript\">parent.document.getElementById(\"imageId\").innerHTML = '<img  src=\"image/uploads/demo.png\">'; parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_success\">Файл успешно загружено</p>';</script>";

        }elseif ($_FILES['upload_photo']['type'] == 'image/png' && $_FILES['upload_photo']['size'] <= 512000){

            $upload_photo= $_FILES['upload_photo']['name'];
            $puth = copy($_FILES['upload_photo']['tmp_name'],"image/uploads/".uniqid($upload_photo). '.png');
            echo "<script type=\"text/javascript\">parent.document.getElementById(\"imageId\").innerHTML = '<img  src=\"image/uploads/demo.png\">'; parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_success\">Файл успешно загружено</p>';</script>";

        }elseif ($_FILES['upload_photo']['type'] == 'application/msword' && $_FILES['upload_photo']['size'] <= 512000){

            $upload_photo= $_FILES['upload_photo']['name'];
            $puth = copy($_FILES['upload_photo']['tmp_name'],"image/uploads/".uniqid($upload_photo). '.doc');
            echo "<script type=\"text/javascript\">parent.document.getElementById(\"imageId\").innerHTML = '<img  src=\"image/uploads/demo.png\">'; parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_success\">Файл успешно загружено</p>';</script>";

        }elseif ($_FILES['upload_photo']['type'] == 'application/pdf' && $_FILES['upload_photo']['size'] <= 512000){

            $upload_photo= $_FILES['upload_photo']['name'];
            $puth = copy($_FILES['upload_photo']['tmp_name'],"image/uploads/".uniqid($upload_photo). '.pdf');
            echo "<script type=\"text/javascript\">parent.document.getElementById(\"imageId\").innerHTML = '<img  src=\"image/uploads/demo.png\">'; parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_success\">Файл успешно загружено</p>';</script>";

        }elseif ($_FILES['upload_photo']['type'] == 'application/vnd.ms-excel' && $_FILES['upload_photo']['size'] <= 512000){

            $upload_photo= $_FILES['upload_photo']['name'];
            $puth = copy($_FILES['upload_photo']['tmp_name'],"image/uploads/".uniqid($upload_photo). '.xls');
            echo "<script type=\"text/javascript\">parent.document.getElementById(\"imageId\").innerHTML = '<img  src=\"image/uploads/demo.png\">'; parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_success\">Файл успешно загружено</p>';</script>";
        }

        // уведомление об ошибке
        else if (($_FILES['upload_photo']['type'] != 'image/gif' && $_FILES['upload_photo']['type'] != 'image/jpeg' && $_FILES['upload_photo']['type'] != 'image/png'))
        {
            echo "<script type=\"text/javascript\">parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_error\">Недопустимый тип файла</p>';</script>";
        }
        else if ($_FILES['upload_photo']['size'] > 512000)
        {
            echo "<script type=\"text/javascript\">parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_error\">Недопустимый размер файла</p>';</script>";
        }
        else
        {
            echo "<script type=\"text/javascript\">parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_error\">Произошла ошибка при загрузке файла</p>';</script>";
        }
    }
}

Я делаю это на странице заказа, чтобы имя прикрепленного файла было вместе с заказом и запись в базу. Делаю:
$this->db->query("INSERT INTO `" . DB_PREFIX . "order` SET invoice_prefix = '" . $this->db->escape($data['invoice_prefix']) . "', store_id = '" . (int)$data['store_id'] . "', **file** = '" . **$puth** . "', store_name = '" . $this->db->escape($data['store_name']) . "', store_url = '" . $this->db->escape($data['store_url']) . "', customer_id = '" . (int)$data['customer_id'] . "', customer_group_id = '" . (int)$data['customer_group_id'] . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', payment_firstname = '" . $this->db->escape($data['payment_firstname']) . "', payment_lastname = '" . $this->db->escape($data['payment_lastname']) . "', payment_company = '" . $this->db->escape($data['payment_company']) . "', payment_company_id = '" . $this->db->escape($data['payment_company_id']) . "', payment_tax_id = '" . $this->db->escape($data['payment_tax_id']) . "', payment_address_1 = '" . $this->db->escape($data['payment_address_1']) . "', payment_address_2 = '" . $this->db->escape($data['payment_address_2']) . "', payment_city = '" . $this->db->escape($data['payment_city']) . "', payment_postcode = '" . $this->db->escape($data['payment_postcode']) . "', payment_country = '" . $this->db->escape($data['payment_country']) . "', payment_country_id = '" . (int)$data['payment_country_id'] . "', payment_zone = '" . $this->db->escape($data['payment_zone']) . "', payment_zone_id = '" . (int)$data['payment_zone_id'] . "', payment_address_format = '" . $this->db->escape($data['payment_address_format']) . "', payment_method = '" . $this->db->escape($data['payment_method']) . "', payment_code = '" . $this->db->escape($data['payment_code']) . "', shipping_firstname = '" . $this->db->escape($data['shipping_firstname']) . "', shipping_lastname = '" . $this->db->escape($data['shipping_lastname']) . "', shipping_company = '" . $this->db->escape($data['shipping_company']) . "', shipping_address_1 = '" . $this->db->escape($data['shipping_address_1']) . "', shipping_address_2 = '" . $this->db->escape($data['shipping_address_2']) . "', shipping_city = '" . $this->db->escape($data['shipping_city']) . "', shipping_postcode = '" . $this->db->escape($data['shipping_postcode']) . "', shipping_country = '" . $this->db->escape($data['shipping_country']) . "', shipping_country_id = '" . (int)$data['shipping_country_id'] . "', shipping_zone = '" . $this->db->escape($data['shipping_zone']) . "', shipping_zone_id = '" . (int)$data['shipping_zone_id'] . "', shipping_address_format = '" . $this->db->escape($data['shipping_address_format']) . "', shipping_method = '" . $this->db->escape($data['shipping_method']) . "', shipping_code = '" . $this->db->escape($data['shipping_code']) . "', comment = '" . $this->db->escape($data['comment']) . "', total = '" . (float)$data['total'] . "', affiliate_id = '" . (int)$data['affiliate_id'] . "', commission = '" . (float)$data['commission'] . "', language_id = '" . (int)$data['language_id'] . "', currency_id = '" . (int)$data['currency_id'] . "', currency_code = '" . $this->db->escape($data['currency_code']) . "', currency_value = '" . (float)$data['currency_value'] . "', ip = '" . $this->db->escape($data['ip']) . "', forwarded_ip = '" .  $this->db->escape($data['forwarded_ip']) . "', user_agent = '" . $this->db->escape($data['user_agent']) . "', accept_language = '" . $this->db->escape($data['accept_language']) . "', sum_ = '" . (float)$sum_ . "', date_added = NOW(), date_modified = NOW()");

если не делать проверок, то имя файла и в базу приходит и на сервер, но тогда есть возможность, что два файла с одинаковыми именами не будут записаны.
Как сделать запись в базу, чтобы имя бралось не  
$_FILES['upload_photo']['name'] 

а 
$puth = copy($_FILES['upload_photo']['tmp_name'],"image/uploads/".uniqid($upload_photo). '.jpeg');

A:

Не совсем понял. Ну попробую.

Всю вашу портянку с ифами можно явно сократить.
Путь директории, куда копируется картинка надо держать в свойстве класса, а никак не внутри метода хардкодить.
Ссылку уже на загруженный и скопированный файл можно также хранить в поле класса.

Будет что-то примерно такое:
class MySuperNothingClass {

    private $uploadDir = "image/uploads/";
    private $uploadedImgPath = '';
    private $flashMessage = '';

    public function upload(){

        if (is_uploaded_file($_FILES['upload_photo']['tmp_name'])) {        
            $ext = '';

            if ($_FILES['userfile']['error'] !== UPLOAD_ERR_OK) {        
                $this->$flashErrorMessage = "<script type=\"text/javascript\">parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_error\">Произошла ошибка при загрузке файла</p>';</script>";
                return false;
            }

            if ($_FILES['upload_photo']['size'] > 512000) {        
                $this->$flashErrorMessage = "<script type=\"text/javascript\">parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_error\">Недопустимый размер файла</p>';</script>";
                return false;
            }

            $ext = pathinfo($_FILES['upload_photo']['name'], PATHINFO_EXTENSION);               

            if ($ext != 'gif' && $ext != 'jpeg' && $ext != 'jpg' && $ext != 'png') {
                $this->$flashErrorMessage = "<script type=\"text/javascript\">parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_error\">Недопустимый тип файла</p>';</script>";
                return false;
            }

            $upload_photo = $_FILES['upload_photo']['name'];        
            $uploadedPath = $this->uploadDir . uniqid($upload_photo);
            if (copy($_FILES['upload_photo']['tmp_name'], $uploadedPath)) {
                $this->uploadedImgPath = $uploadedPath;
                $this->$flashErrorMessage = "<script type=\"text/javascript\">parent.document.getElementById(\"imageId\").innerHTML = '<img  src=\"image/uploads/demo.png\">'; parent.document.getElementById(\"image_upload_status\").innerHTML = '<p class=\"image_success\">Файил успешно загружено</p>';</script>";     
                return true;
            }

            return false;        
        }
    }

    public function actionUploadImage() {
        if (!$this->upload()) {     
            echo $this->flashMessage;
            return false;
        }       

        // здесь работа с БД
        // ...
        $this->db->query("INSERT INTO `" . DB_PREFIX . "order` 
                          SET invoice_prefix = '" . $this->db->escape($data['invoice_prefix']) . "', 
                              store_id = '" . (int)$data['store_id'] . "',
                              file = '" . $this->uploadedImgPath . "', 
                              store_name = '" . $this->db->escape($data['store_name']) . "',                                         
                              ...
                              ...
                              и т.д"
                         );

        echo $this->flashMessage;
    }
}

Как видим, текст ошибки тоже вынес в поле класса. Теперь в методе некоего обработчика мы спрашиваем метод upload(): все прошло хорошо или нет? Если нет - то выбрасываем сохраненный текст ошибки и заканчиваем работу. А вот если всё нормально, то только тогда ведем сохранение в базу данных и отображаем надпись, что файл загружен.
Ну и самое главное, собственно, в методе upload смотрим, если copy() отрабатывает корректно, то складываем путь в поле $uploadedImgPath и уже его применяем в запросе.

P.S. в методе copy вы зря дописывали . $ext. Это надо было делать, если вы разделяли где-либо имя файла от расширения и теперь нужно склеить. Однако вы этого не делали, поэтому и дополнение это не требуется.
P.P.S. для проверки принадлежности картинки определенному типу можно использоваться exif_imagetype, вместо того, что я написал. Почитайте об этом сами.
P.P.P.S. вообще этот код можно еще бесконечно улучшить. Но не зная точно, что у вас там как варится внутри я почти оставил всё как есть.

