Page 1 sur 1

Problème de bind de variables

Posté : 23 mai 2012, 18:47
par Mazarini
Bonjour,

Je voulais faire une fonction qui gère les accès à une base donnée.
<?PHP
    public static function query($sql,$type='',$param=array ()) {
        self::$stmt = self::$mysqli->prepare($sql);
        self::verify($sql);
        $data = array_merge(array(self::$stmt, $type), $param);
        call_user_func_array('mysqli_stmt_bind_param', $data);
        self::$stmt->execute();
    }
?>
Comme prévisible d'après la doc, j'ai l'erreur :
Warning: Parameter 3 to mysqli_stmt_bind_param() expected to be a reference, value given in /home/pascal/dev/include/database.php on line 78

Je me demande s'il est possible de corriger cette erreur ou de faire fonctionner une fonction de ce genre.

Re: Problème de bind de variables

Posté : 30 mai 2012, 17:07
par kny
Tu désires faire une fonction qui s'occupent des requêtes?
Pourquoi ne pas utiliser PDO? (Si j'ai bien compris ce que tu désires...)

Re: Problème de bind de variables

Posté : 31 mai 2012, 14:58
par Mazarini
Bonjour,

Effectivement, j'en suis arrivé à la même conclusion et je me suis mis à PDO.
Ca marche pour ce que je veux faire.

Re: Problème de bind de variables

Posté : 31 mai 2012, 15:31
par kny
Après, tu peux créer une classe qui va s'occuper de gérer PDO, en singleton par exemple, pour n'avoir qu'une seule instance de PDO, un accès facilité aux requêtes, etc...
J'ai travaillé sur une classe telle que celle-ci, qui me sert finalement au quotidien (ce qui est l'intérêt finalement ^.^ ), si cela t'intéresse?

Re: Problème de bind de variables

Posté : 01 juin 2012, 09:59
par Mazarini
Pour le moment, j'ai créer une classe static qui me permet de gérer mes tables. Comme je n'ai pas de page sans accès à la base de données, je fais une connexion systématique lors de l'include de la classe.
En gros j'ai une fonction par type d'ordre sql, insert, update, delete, select unique, select multiple (+function fetch). Chaque fonction me retour ce qui est nécessaire (id, nombre de ligne, ligne ou curseur).
Une couche me permet de faire les ordres sql de base suivant le nom de la table, les colonnes et leur type (via héritage) et suivant des paramètres propre à chaque action. Il me reste à gérer des exceptions genre index non unique, pas de maj, pas de suppression ou non trouvé. Les autres exceptions provoquent un arrêt du traitement avec une page propre.
Pour le moment, je mets au point le moteur qui enchaînent les opérations et gère l'affichage pour tester facilement les accès à la base de donnée.