Page 1 sur 1

Compatibilité PHP 5.2 / 5.3 ?

Posté : 04 avr. 2012, 20:05
par frexios
Bonjour à tous,

Je suis tombé sur un problème bizzare.

Ma classe :
    class ManageDB
    {
        private $bdd;
        private db_table;
	
        public function __construct ($pdo_host, $pdo_user, $pdo_password, $pdo_bdd, $pdo_table)
        {
                $this->db_table = $pdo_table;
                $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
                $this->bdd = new PDO('mysql:host=' . $pdo_host . ';dbname=' . $pdo_bdd, $pdo_user, $pdo_password, $pdo_options);
        }

                public function getUser($id)
                {
                    $req = $this->bdd->query('SELECT user FROM '.$this->db_table.' WHERE id=\''.$id.'\' LIMIT 0, 1');

                    while ($str = $req->fetch())
                    {
                        $getUser = $str['user'];
                    }
                    
                    $req->closeCursor();

                    return $getUser ;
                }
Mon script file.php

require("maclass.php");

$user = new ManageDB('localhost', 'root', '', 'mabdd', 'matable');

echo $user->getUser("5");
Résultat obtenue :
Fatal error: Call to a member function query() on a non-object in /home/programming/class.php on line 51

La ligne 51 :
                    $req = $this->bdd->query('SELECT user FROM '.$this->db_table.' WHERE id=\''.$id.'\' LIMIT 0, 1');
Le truc bizzare c'est que lors du teste j'utilisais la version 5.2 de PHP, puis j'ai eu l'idée du siècle.. tester sous PHP 5.3 ! et la miracle sa marche !
Du coup j'aimerais bien une confirmation ? est ce impossible a faire sur PHP 5.2 ? et pourquoi cette erreur dessus ?

Merci d'avance a celui qui pourrais m'éclairer.

Re: Compatibilité PHP 5.2 / 5.3 ?

Posté : 05 avr. 2012, 08:55
par moogli
salut,

Je penche plutôt sur le fait que l'instanciation de PDO est foireuse sur ton archi 5.2.

Si tu veux en être sure c'est simple ajoute un var_dump($this->bdd); ;)

et vérifie le niveau d'erreur il doit être à E_ALL | E_STRICT pour le dev :mrgreen:


@+

++ Compatibilité PHP 5.1 / 5.3 ?

Posté : 08 avr. 2012, 19:35
par pete_33
Bonjour,
je rencontre un pb équivalent:
Sur mon serveur de test (Php 5.3) mes requêtes en "PDO" incluses dans une Class particulière se passent parfaitement:
	public function exist($code_oaci)
	{ 
		$q = $this->db->prepare('SELECT COUNT(*) FROM liaison_terrains WHERE code_oaci = :code_oaci');
      	$q->execute(array(':code_oaci' => (string) $code_oaci));            
        return (bool) $q->fetchColumn();
	}
Sauf que sur le serveur opérationnel (Php 5.1 extentions PDO activées),
j'obtiens l'erreur suivante:
"Call to a member function execute() on a non-object"
Comme je n'ai pas la possibilité de faire faire un update à 5.3, y aurait il une solution pour modifier/dégrader/simplifier le code pour que ça marche (sans abandonner complètement le traitement en objet :shock: )
Merci pour toute suggestion !

Re: Compatibilité PHP 5.2 / 5.3 ?

Posté : 08 avr. 2012, 19:45
par xTG
As-tu essayé ainsi ?
$pdo = $this->db;
$q = $pdo->prepare('SELECT COUNT(*) FROM liaison_terrains WHERE code_oaci = :code_oaci');

Re: Compatibilité PHP 5.2 / 5.3 ?

Posté : 08 avr. 2012, 20:11
par pete_33
Non,
en 5.3 le résultat de ta proposition "reste" bon, mais je n'ai pas accès "localement" sur le serveur 5.1 qui me pose pb.
-tu penses qu'en "dissociant/décomposant" l'écriture ça sera mieux ?
-une idée pour trouver à installer une "vieille" version en 5.1 pour poursuivre des tests "locaux ? :?:

Re: Compatibilité PHP 5.2 / 5.3 ?

Posté : 08 avr. 2012, 20:31
par moogli
Salut,
Une "vieille" version de php tu devrais trouver sur php.net, http://fr.php.net/releases/
Est ce que les configurations de php son identique ?
As tu essayé de debuger à grand coup de var_dump();

@+

Re: Compatibilité PHP 5.2 / 5.3 ?

Posté : 09 avr. 2012, 18:13
par pete_33
Bonjour,
les "deux" versions ont la même extension PDO. Je ne sais dire plus..
Comment manipuler var_dump ? (je ne suis pas familier!
:shock:

Re: Compatibilité PHP 5.2 / 5.3 ?

Posté : 09 avr. 2012, 20:01
par xTG
var_dump($var);
Cela permet d'avoir un affichage formatté d'un objet, array ou variable autre.

Re: Compatibilité PHP 5.2 / 5.3 ?

Posté : 16 avr. 2012, 16:48
par stealth35
faut activer la gestion des erreurs pour PDO
http://php.net/manual/fr/pdo.error-handling.php