Convertir une requête SQL en format blob

Eléphant du PHP | 117 Messages

27 juin 2008, 15:54

Bonjour à tous, je travaille actuellement sur un outil CMS très connu (typo3) et j'aimerai savoir comment on converti une requete SQL en format blob car dans la base de données des requêtes sont stockées au format blob et je dois en ajouter dans ce format.
Si quelqu'un a une idée ...
Merci d'avance

Eléphant du PHP | 422 Messages

27 juin 2008, 16:09

Le format blob, c'est uniquement une zone qui a une limitation de taille beaucoup beaucoup plus importante qu'un char ou varchar. Tu peux donc y stocker du texte comme tu veux :il n'y a rien à convertir.

Eléphant du PHP | 117 Messages

27 juin 2008, 16:28

Oki merci du conseil et comment faire l'inverse, à savoir récupérer en chaine de caractère la requête en type BLOB ?

ViPHP
ViPHP | 4039 Messages

27 juin 2008, 16:59

le blob enregistre aussi les données au format binaire..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 117 Messages

27 juin 2008, 20:51

Ba quand je fais exporter la table en code sql voici le champ blob correspondant :
0x7374616769616972652e7765626d61737465724063616c6169732e6363692e66720d0a76616c6572652e6661676f744063616c6169732e6363692e6672
Je voudrais traduire ça en requete et inversement ... C'est possible ?

Et quand je fais un echo du champ correspondant j'obtiens ceci dans ma page php :
a:1:{i:0;a:4:{s:8:"operator";s:0:"";s:4:"type";s:18:"FIELD_addressgroup";s:10:"comparison";s:2:"64";s:10:"inputValue";s:1:"1";}}

ViPHP
ViPHP | 2287 Messages

27 juin 2008, 23:15

Ba quand je fais exporter la table en code sql voici le champ blob correspondant :
0x7374616769616972652e7765626d61737465724063616c6169732e6363692e66720d0a76616c6572652e6661676f744063616c6169732e6363692e6672
Je voudrais traduire ça en requete et inversement ... C'est possible ?

Et quand je fais un echo du champ correspondant j'obtiens ceci dans ma page php :
a:1:{i:0;a:4:{s:8:"operator";s:0:"";s:4:"type";s:18:"FIELD_addressgroup";s:10:"comparison";s:2:"64";s:10:"inputValue";s:1:"1";}}
Ce sont des données PHP sérialisées. Regarde du côté d' unserialize() .
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 117 Messages

28 juin 2008, 18:26

Merci pour ta réponse, alors j'ai utilisé la fonction unserialize et voici ce que j'obtiens :
requete => a:1:{i:0;a:4:{s:8:"operator";s:0:"";s:4:"type";s:18:"FIELD_addressgroup";s:10:"comparison";s:2:"64";s:10:"inputValue";s:1:"1";}}
requete2 => Array

Voici mon code php associé :
$blob=mysql_fetch_array($requete);
echo "titre => ".$blob['title']."<br>";
echo "requete => ".$blob['query']."<br>";
$blob2=unserialize($blob['query']);
echo "requete2 => ".$blob2."<br>";

J'ai essayé d'affiché $blob[0] mais ça affiche Array aussi ...

ViPHP
ViPHP | 2287 Messages

28 juin 2008, 18:54

Merci pour ta réponse, alors j'ai utilisé la fonction unserialize et voici ce que j'obtiens :
requete => a:1:{i:0;a:4:{s:8:"operator";s:0:"";s:4:"type";s:18:"FIELD_addressgroup";s:10:"comparison";s:2:"64";s:10:"inputValue";s:1:"1";}}
requete2 => Array

J'ai essayé d'affiché $blob[0] mais ça affiche Array aussi ...
Essaye ceci:
<pre><?php
print_r($blob2); 
?></pre>
pour visualiser et mieux comprendre la structure :-) Ce tableau contient d'autres tableaux. Pour manipuler cela tu es obligé d'avoir une bonne vue d'ensemble sur la structure des tableaux imbriqués.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 117 Messages

28 juin 2008, 18:58

J'otiens ceci :
Array
(
[0] => Array
(
[operator] =>
[type] => FIELD_addressgroup
[comparison] => 64
[inputValue] => 1
)

)

ViPHP
ViPHP | 2287 Messages

28 juin 2008, 19:01

J'otiens ceci :
Array
(
[0] => Array
(
[operator] =>
[type] => FIELD_addressgroup
[comparison] => 64
[inputValue] => 1
)

)
ça veut dire que tu peux accéder à tes éléments comme ceci :
<?php
echo $blob2[0]['type']; // Affiche FIELD_addressgroup
$blob2[0]['inputValue']=0; // Place la valeur 0 dans la clé 'inputValue' du tableau
?>
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 117 Messages

28 juin 2008, 19:09

Merci pour ta réponse, mais dans ce champ il y a une requête sql stockée :
a:1:{i:0;a:4:{s:8:"operator";s:0:"";s:4:"type";s:18:"FIELD_addressgroup";s:10:"comparison";s:2:"64";s:10:"inputValue";s:1:"1";}}

Cette requête correspond à ceci :
SELECT uid,pid,deleted FROM tt_address WHERE ( addressgroup = '1') AND tt_address.deleted=0

Mais je n'arrive pas à l'afficher avec la méthode que tu m'as donné ...

ViPHP
ViPHP | 2287 Messages

28 juin 2008, 19:15

Visiblement, la requête SQL est composée dynamiquement à partir des informations que tu as sous les yeux. Le plus simple pour toi est sûrement de trouver dans ton projet la fonction/classe existante qui permet de la recomposer.

La seule alternative serait de refaire ce code toi-même, et je devine à tes questions que tu n'es pas motivé pour le faire...
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 117 Messages

28 juin 2008, 19:23

Ok en tout cas merci pour votre aide, je vais regardé si je peux utiliser le fichier php de typo3 qui sert à créer ce champ, mais le code de l'outil est assez complexe, c'est pour cette raison que je voulais tenter de passer à côté ...