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

PhpMyObject Discussion :

Le test10() de test.php ne fonctionne pas.


Sujet :

PhpMyObject

  1. #1
    Chef de projet PhpMyObject
    Le test10() de test.php ne fonctionne pas.
    PMO ne reconnait pas le changement de base de données, ni même du driver.

    Voir test2.php ci-joint.
    Regarde au-delà de l'horizon. L'univers est là-bas. Tes rêves aussi.

    Laplix
    http://pmo.developpez.com/

  2. #2
    Membre habitué
    J'ai commencé à corriger le problème et je me rends compte qu'il y a également un truc plus compliqué derrière au niveau du driver pdo pour sqlite

    sqlite ne connait pas la methode execute ://
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  3. #3
    Chef de projet PhpMyObject
    Citation Envoyé par code34 Voir le message

    sqlite ne connait pas la methode execute ://
    ?? Cette page (http://sqlite.org/pragma.html) parle de sqlite3_prepare() et de sqlite3_step(). À moins que je ne me trompe, c'est la même fonctionnalité non?

    De toute façon, PDO émule cette fonctionnalité si elle n'est pas présente nativement. Voir cette page à ce sujet : http://ca3.php.net/manual/fr/functio...DO-prepare.php

    À moins que je n'aie vraiment pas compris ta remarque?

    Par contre, pour que sqlite fonctionne correctement avec un driver pdo, il faut ajuster PMO_sgbd_pdo et remplacer ce code dans la fonction connectSgbd()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    self::$DB = new PDO("$authdb[pdodriver]:host=$authdb[host];dbname=$authdb[base]", $authdb['user'], $authdb['pass']);
    self::$DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    par ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($authdb['pdodriver'] == 'sqlite')
       self::$DB = new PDO($authdb['dsn']);
    else
       self::$DB = new PDO("$authdb[pdodriver]:host=$authdb[host];dbname=$authdb[base]", $authdb['user'], $authdb['pass']);
    
    self::$DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    Regarde au-delà de l'horizon. L'univers est là-bas. Tes rêves aussi.

    Laplix
    http://pmo.developpez.com/

  4. #4
    Chef de projet PhpMyObject
    Fichier test_execute.php
    J'ai écrit un petit test pour essayer de comprendre le problème avec execute(). Mais je ne vois toujours pas...

    Si je me suis trompé, n'hésites pas !!
    Regarde au-delà de l'horizon. L'univers est là-bas. Tes rêves aussi.

    Laplix
    http://pmo.developpez.com/

  5. #5
    Membre habitué
    pas eu le temps de répondre encore, je test et je vois pourquoi ça ne marche pas, et je te donne un retour
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  6. #6
    Membre habitué
    Je viens d'appliquer un premier correctif sur le svn.

    Je crois que le problème a été réglé, peux-tu confirmer ?
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  7. #7
    Membre habitué
    Par rapport à ton exemple:


    $database = dirname(__FILE__).'/test2.db';
    $pdo = new PDO("sqlite:".$database);
    $pdostatement = $pdo->prepare("select * from adress");
    $pdostatement->execute();
    ne fonctionne pas. Pdo ne renvoie aucune exception, il ne renvoit aucun objet pdostatement, je ne sais pas pourquoi ? peut-être as tu une explication ?
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  8. #8
    Membre habitué
    je viens de vérifier quand le fichier db n'est pas un fichier de bdd sqlite, aucune exception est remontée par le driver pdo .

    Le problème que tu as remonté est normalement corrigé avec sqlite.
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

  9. #9
    Membre habitué
    deuxieme chose sqlite ne renvoit pas de messages d'erreurs non plus quand la table n'existe pas :/

    J'ai implémenté quelque chose dans le driver sqlite pour que ça remonte une exception quand la table n'existe pas.
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.