Bonjour,

J'ai un souci avec mysql_escape_string dans la page model.php. Celle ci est en effet, avec la maj de PHP 5.5.0, passé au statut "Deprecated".

La doc php suggère d'utiliser PDO::QUOTE à la place. Je remplace donc le code suivant :

if(isset($req'conditions'])){
            $sql .= 'WHERE ';
            if(!is_array($req'conditions'])){
                $sql .= $req'conditions']; 
            }else{
                $cond = array(); 
                foreach($req'conditions'] as $k=>$v){
                    if(!is_numeric($v)){
                        $v = '"'.mysql_escape_string($v).'"'; 
                    }

                    $cond] = "$k=$v";
                }
                $sql .= implode(' AND ',$cond);
            }
        }

par :

if(isset($req'conditions'])){
            $sql .= 'WHERE ';
            if(!is_array($req'conditions'])){
                $sql .= $req'conditions']; 
            }else{
                $cond = array(); 
                foreach($req'conditions'] as $k=>$v){
                    if(!is_numeric($v)){
                        $v = '"'.$this->db->quote($v).'"'; 
                    }

                    $cond] = "$k=$v";
                }
                $sql .= implode(' AND ',$cond);
            }
        }

Alors, si cela me permet de résoudre le problème, il m'en génère un tout autre car mes articles et pages ne remonte plus.
Et j'ai le message d'erreur suivant lorsque par exemple je clique sur une catégorie :

Warning: Missing argument 1 for Controller::e404(), called in C:\wamp\www\controller\PostsController.php on line 34 and defined in C:\wamp\www\core\Controller.php on line 79

et

Notice: Undefined variable: message in C:\wamp\www\core\Controller.php on line 81

lorsque je fais un debug, je n'ai effectivement rien rien dans ma variable.

Est-ce que quelqu'un à déjà rencontré/résolu ce problème ? je n'ai rien vu à ce propos sur le forum, ou alors je suis passé a coté !

Merci d'avance,

3 réponses


Typhon
Réponse acceptée

Je suis allé voir la doc, est visiblement, cette méthode met automatiquement des Quote autour de la chaine si elle en à besoin, ainsi, une chaine sera automatiquement entouré de ' et '.

Essaie comme ça

$v = $this->db->quote($v);

Je suis une vraie andouille, ça ne ma pas fait tilt quand je l'ai lu !!

Merci pour cette éclaircissement !

Je te remercie aussi Typhon j'avais pas le problème de l'obsolescence mais je voulais prévoir ce genre de cas, maintenant ça fonctionne avec PDO::QUOTE au lieu de MySQL_real_escape_string sinon j'ai vu qu'on pouvait le faire avec mysqli mais j'ai pas regardé comment ça fonctionnait ^^ .