Php6 et pdo

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Php6 et pdo

par SpintroniK » 08 avr. 2009, 16:22

Oui mais pour faire du rapport de bug intéressant sur une version en plein développement il faut avoir une bonne connaissance des nouveautés apportées par cette version. Sais-tu quelles sont les façons de passer d'une chaîne classique à une chaîne unicode en php6 ?

Sans ce prérequis, je vois mal ce que tu peux faire d'autre que buter sur ce genre de souci.
C'est pour obtenir ce genre d'info que je pose la question ;)
Tu pourrais avoir ces informations soit en analysant le code source de php, soit en suivant méthodiquement l'activité de la mailing-list de dev.
Si seulement j'avais le temps :D
L'intention est louable, mais il faut bien réaliser l'investissement personnel que ça demande pour être bien fait. AMHA c'est vraiment trop tôt pour faire du test lambda, il faudrait au moins attendre une bêta (et les compléments de documentation qui vont avec) pour cela.
À quand la bêta ? :D

[EDIT]
Et, au fait, oui je sais comment passer d'une chaîne classique à une chaîne unicode en php6 :
http://conf.phpquebec.com/slides/2007/u ... g_php6.pdf
http://fr.php.net/manual/fr/function.unicode-encode.php
[/EDIT]

par Calimero » 08 avr. 2009, 11:41

Oui mais pour faire du rapport de bug intéressant sur une version en plein développement il faut avoir une bonne connaissance des nouveautés apportées par cette version. Sais-tu quelles sont les façons de passer d'une chaîne classique à une chaîne unicode en php6 ?

Sans ce prérequis, je vois mal ce que tu peux faire d'autre que buter sur ce genre de souci.

Tu pourrais avoir ces informations soit en analysant le code source de php, soit en suivant méthodiquement l'activité de la mailing-list de dev.

L'intention est louable, mais il faut bien réaliser l'investissement personnel que ça demande pour être bien fait. AMHA c'est vraiment trop tôt pour faire du test lambda, il faudrait au moins attendre une bêta (et les compléments de documentation qui vont avec) pour cela.

par SpintroniK » 07 avr. 2009, 22:55

:cry: Personne n'a une petite idée ?
Une idée de ce que tu cherches à faire en testant tes scripts sous php6 qui est en plein développement et donc truffé de bugs ? non. Faudrait peut-être commencer par là ;-)
Par où ?
Ça serait surement plus intéressant de savoir si ce bug a déjà été signalé/résolu afin de contribuer au dev de php6 ?

par Calimero » 07 avr. 2009, 17:44

:cry: Personne n'a une petite idée ?
Une idée de ce que tu cherches à faire en testant tes scripts sous php6 qui est en plein développement et donc truffé de bugs ? non. Faudrait peut-être commencer par là ;-)

par SpintroniK » 07 avr. 2009, 14:42

:cry: Personne n'a une petite idée ?

par SpintroniK » 04 avr. 2009, 11:16

Exemple concret :
$list_cat	= $sql->query("SELECT * FROM ".$pre."_categories ORDER BY nb ASC");
$list_cat->setFetchMode(PDO::FETCH_ASSOC);

while ($cat = $list_cat->fetch())
{
  print_r($cat);
  var_dump($cat['nb']);
}
Ce code retourne ceci :

Code : Tout sélectionner

array(3) { ["id"]=> string(1) "3" ["titre"]=> string(9) "Général" ["nb"]=> string(1) "1" } Notice: Undefined index: nb in /var/www/.../index.php on line 72 NULL
Maintenant, avec ceci :
$list_cat	= $sql->query("SELECT * FROM ".$pre."_categories ORDER BY nb ASC");
$list_cat->setFetchMode(PDO::FETCH_OBJ);

while ($cat = $list_cat->fetch())
{
  $cat_array = (array) $cat;
  var_dump($cat_array);
  var_dump($cat_array['nb']);
}
J'obtiens ceci :

Code : Tout sélectionner

array(3) { [u"id"]=> string(1) "3" [u"titre"]=> string(9) "Général" [u"nb"]=> string(1) "1" } string(1) "1"
Donc de cette façon ça fonctionne, mais je voudrais quand même éviter. De même, si je fais un FETCH_NUM, aucun problème...
La seule chose qui diffère, c'est la présence du "u" devant les index du tableau. Je soupçonne donc qu'il y a une sorte de type "unicode", qui diffère du type "string", j'ai tenté quelques petites choses, comme des transtypages etc. mais ça n'a pas fonctionné...

par stopher » 04 avr. 2009, 09:47

Slt ,
ca serai plus facile avec un bout de code pour que nous puissions mieux comprendre , cependant , ton tableau est associatif , donc comme ceci
$tab[0] = array(
                  champ1=>val1,
                  champ2=>val2
                  ... ect);
Puis : 
$tab[1] = array(
                  champ1=>val1,
                  champ2=>val2
                  ... ect);
Pour en venir au fait , que tu doit accèder à ta valeure comme ceci :

soit un foreach :
foreach($result AS &$field){
      print_r($field['champ1']);
      .... 
}

Ou directement :
print_r($result[0]['champ1']);
print_r($result[0]['champ2']);
...
Voilà , je pense que ton problème est là mais sans certitude sans voir de code ..

Bon courage ,

Ch.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par SpintroniK » 03 avr. 2009, 23:35

Bon en fait je pensais le problème résolu, mais j'en ai un autre.

Maintenant que l'installation fonctionne, j'ai un problème avec le FETCH_ASSOC de PDO.
je fais donc un requête, et je récupère tout avec FETCH_ASSOC, sauf que là, quand je fais un print_r, ou var_dump, j'ai bien un tableau indicé avec les chaines correspondant aux champs de la table, mais lorsque j'essaye d'y accéder, rien, j'ai un NULL.

Exemple concret, je récupère les champs d'une table via FETCH_ASSOC de PDO, dans la variable $cat. Je fais un print_r, imaginons que j'ai un indice "nb" dans mon tableau (donc un champ nb dans ma talbe). J'ai un donc un talbeau $cat qui possède un indice nb en théorie. Sauf que lorsque je fais $cat['nb'] ou $cat["nb"], je me récupère un joli NULL.

Quelqu'un pourrait me dire pourquoi ?

J'ai aussi remarqué que le problème n'existe pas pour les FETCH_NUM et que si je fais un FETCH_OBJ et que je transtype mon objet en tableau cela fonctionne, cependant, j'aimerais quand même résoudre ce problème.

Merci d'avance.

par SpintroniK » 02 avr. 2009, 08:32

Dans le bon ordre :D :lol:

par stopher » 02 avr. 2009, 08:07

Dans quel ordre as tu ajouté ces extensions dans le php.ini ?

Car c'est important , il faut d'abord , pdo.so , et ensuite le driver que tu souhaites donc , mysql par exemple .

Edit : Oups je n'avais pas vu ton edit ... :)

par SpintroniK » 01 avr. 2009, 22:40

Bon j'ai bien avancé, j'ai ajouté les extensions au php.ini (pdo.so et pdo_mysql.so).
Par contre, ça ne fonctionne toujours pas, pdo se charge bien au lancement d'apache seulement, j'ai un autre pb, pdo_mysql ne veut pas se charger et je récupère l'erreur suivante :

Code : Tout sélectionner

PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20070729/pdo_mysql.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20070729/pdo_mysql.so: undefined symbol: mysql_get_client_info in Unknown on line 0
Je ne sais pas vraiment comment interpréter ça...

[EDIT]
mon configure est maintenant :
'./configure' '--with-apxs2=/usr/bin/apxs2' '--enable-soap' '--with-zlib' '--enable-pdo=shared' '--with-pdo-sqlite=shared' '--with-sqlite=shared' '--with-pdo-mysql=shared' '--with-mysql=shared' '--with-mcrypt=shared'

j'ai donc un léger doute sur le --with-mysql=shared, peut être qu'il faut mettre le rep d'installation de mysql C'était effectivement ça
[/EDIT][/b]

par stopher » 01 avr. 2009, 08:10

Slt ,
Configuration File (php.ini) Path /usr/local/lib
Est l'endroit ou il tente de trouver un fichier php.ini .

Suite à une compilation à la mano , il n'y a pas de php.ini de mis en place .
Il faut aller le chercher dans les sources , il proposent deux versions de ces fichiers :

php.ini-dist => version standard du php.ini
php.ini-recommended => version modifié un peu plus sécure


Il te suffit donc de copier l'un ou l'autre vers ton path : /usr/local/lib/

Code : Tout sélectionner

cp /rep/de/mes/sources/php.ini-dist /usr/local/lib/php.ini
Voilà pour le début , tu pourras donc ensuite , préciser les rep ou se trouvent tes modules pour php .

Ch.

Php6 et pdo

par SpintroniK » 31 mars 2009, 23:52

Bonsoir,

j'ai compilé, sous ubuntu, php6 selon la configuration suivante :

Code : Tout sélectionner

./configure --with-apxs2=/usr/bin/apxs2 --enable-soap --with-zlib --enable-pdo=shared --with-pdo-sqlite=shared --with-sqlite=shared
et j'ai cependant un léger problème :

Code : Tout sélectionner

<b>Fatal error</b>: Class 'PDO' not found in <b>/var/www/...

:cry:
l'erreur venant de la ligne :
class SQl extends PDO
{
Je ne trouve pas le php.ini de php6, dans le phpinfo il me dit juste : Configuration File (php.ini) Path /usr/local/lib

Merci d'avance pour vos infos.