problème image et insertion en bdd

Invité
Invité n'ayant pas de compte PHPfrance

07 févr. 2008, 22:13

Bonsoir, j'ai une fonction qui me permet d'enregistrer des photos en base de données, mais j'ai une erreur de syntax sql.
Voici ma fonction :
public function uploadPhoto($id, $img_nom, $img_type, $img_taille, $img_desc, $img_blob) {
        $photo_nom = $this->mMysqli->real_escape_string($img_nom);
        $photo_type = $this->mMysqli->real_escape_string($img_type);
        $photo_taille = $this->mMysqli->real_escape_string($img_taille);
        $photo_desc = $this->mMysqli->real_escape_string($img_desc);
        $vehicule_id = $this->mMysqli->real_escape_string($id);
        
        $query = 'INSERT INTO photos VALUES(NULL, '.$photo_nom.', '.$photo_taille.', '.$photo_type.', '.$photo_desc.', '.$img_blob.', '.$vehicule_id.')';
         
        //echo $query;
        $this->mMysqli->query($query);
        echo $this->mMysqli->error;
        //exit;
    }
Le problème doit provenir des apostrophes mais j'ai essayé plusieurs combinaisons sans succés, donc je viens demander un peu d'aide.
Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 févr. 2008, 22:16

Un peu de lecture :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

08 févr. 2008, 20:40

Mon erreur vient de $image_blob. $image_blob est initialisé avec file_get_contents($fichier['tmp_name'][$i]). Ce sont des photos que j'essaye d'uploader.
for($i = 0; $i < count($fichier['name']); $i++) {
            if(!empty($fichier['name'][$i])) {
            //params
                unset($errors);
                $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
                $taille_max = 100000;
                if( !in_array( substr(strrchr($fichier['name'][$i], '.'), 1), $extensions_ok ) ) {
                    $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
                } elseif( file_exists($fichier['tmp_name'][$i])
                    and filesize($fichier['size'][$i]) > $taille_max) {
                    $erreur = 'Votre fichier doit faire moins de 500Ko !';
                }

                if(!isset($erreur)) {
                    $dest_fichier = basename($fichier['name'][$i]);
                    // formatage nom fichier
                    // enlever les accents
                    $dest_fichier = strtr($dest_fichier,
                    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
                    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                    // remplacer les caracteres autres que lettres, chiffres et point par _
                    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
                }

                $img_blob = file_get_contents($fichier['tmp_name'][$i]);
                $img_taille = $fichier['size'][$i];
                $img_type = $fichier['type'][$i];
                $img_nom = $fichier['name'][$i];
                $img_desc = 'Photo_'.$i;

                $photoVehicules->uploadPhoto($_SESSION['vehicule']['vehicule_id'], $img_nom, $img_type, $img_taille, $img_desc, $img_blob);
Voila, merci de l'aide.