IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Insertion de données binaires [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut Insertion de données binaires
    Salut

    Alors j'ai un problème pour insérer une image au format binaire dans une base MSSQL.

    Voici le code php qui insère l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $image = file_get_contents($_FILES['fichier']['tmp_name']);
    	$image = str_replace( array( '\\', '\'' ), array( '\\\\', '\'\'' ), $image );
     
    	$query = "DECLARE @ptr VARBINARY(16) 
    	DECLARE @lg INT
    	SELECT @ptr=TEXTPTR(PHOTO_0) FROM SERVEUR.ZPHOTO WHERE ITMREF_0='037'
    	WRITETEXT SERVEUR.ZPHOTO.PHOTO_0 @ptr '$image'";
     
    	//$query = "UPDATE SERVEUR.ZPHOTO SET PHOTO_0='$image' WHERE ITMREF_0='037'";
    	mssql_query($query,$cnx);
    Que ce soit avec WRITETEXT ou bien UPDATE qui est ici en commentaires, j'ai l'erreur : Warning: mssql_query() [function.mssql-query]: message: Ouvrez les guillemets avant la chaîne de caractères 'ÿØÿáExif'. (severity 15).

    Or les guillemets sont bien ouverts, je remplace bien les quote (') par des doubles (''), mais non, il ne veut pas.

    Si quelqu'un a une idée, parce que là je ne sais plus quoi faire !
    "Des Lapins ? Mais on est pressés... ça devrait aller... Tu crois pas ?"

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $image = str_replace( array( '\\', '\'' ), array( '\\\\', '\'\'' ), $image );
    addslashes est ton amie, même si ce ne résoud pas forcément le problème.

  3. #3
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    ben en fait, pour MSSQL, les caractères d'échappement ne sont pas les '\', mais je venais de le rajouter quand même dans str_replace afin de tester si c'était ça. J'ai testé addslashes(), ereg_replace() (cette dernière me coupait la chaine à 10 caractères...), et tout plein de choses mais rien ne marche

    et je n'ai pas trouvé grand chose sur le net.
    "Des Lapins ? Mais on est pressés... ça devrait aller... Tu crois pas ?"

  4. #4
    Membre régulier Avatar de Luffy Duck
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 165
    Points : 120
    Points
    120
    Par défaut
    C'est bon ça marche !!!

    Alors pour tous ceux qui sont ou vont galérer comme moi, pour l'insertion de données binaire, il faut les mettre en héxa (avec la fonction unpack() qui est bugguée à la version 5.0.3 de php d'ailleurs...).

    Voici le lien où j'ai trouvé la réponse (sur le site php.net évidemment) :
    http://fr.php.net/manual/fr/function.mssql-query.php#31688

    @+ tout le monde
    "Des Lapins ? Mais on est pressés... ça devrait aller... Tu crois pas ?"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.5] Insertion de données binaires
    Par frp31 dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/01/2014, 19h13
  2. Réponses: 1
    Dernier message: 21/04/2011, 20h45
  3. [Interbase 7] Problème d'insertion de données
    Par Tuscelan dans le forum InterBase
    Réponses: 12
    Dernier message: 19/11/2003, 22h58
  4. insertion de données
    Par m-l dans le forum SQL
    Réponses: 9
    Dernier message: 25/07/2003, 13h59
  5. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo