Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

<?php
/**

  • Created by PhpStorm.
  • User: DaniDev
  • Date: 2019/07/02
  • Time: 14:11
    */

class model
{

static $connection = array();

public $conf = 'default';
public $table = false;
public $db;

public function __construct ()
{
    // je me connecte a la base
    $conf = conf::$databases[ $this->conf ];
    if (isset(model::$connection[$this->conf])){
        $this->db = model::$connection[$this->conf];
        return true;
}
    try {
        $pdo = new PDO('mysql:host=' . $conf[ 'host' ] . ';dbname=' .
            $conf[ 'database' ] . ';', $conf[ 'login' ], $conf[ 'password' ],
        array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')
        );
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
        model::$connection[$this->conf] = $pdo;
        $this->db = $pdo;
    } catch (PDOException $e) {
        if (conf::$debug >= 1) {
            die($e->getMessage());
        }else{
            die('Impossible de se connecter a la base de donnees');
        }
    }
    //j'initialise quelques variables
    if($this->table === false){
        $this->table = strtolower(get_class($this)).'s';
    }
}

/**
 * @param $req  recherche les elements dans la base de donnes
 * @return array
 */
public function find($req){
    $sql = ' SELECT * FROM '.$this->table.' as '.get_class($this).'';

    //construction de la condition
    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 = '"'.mysqli_real_escape_string($req, $v).'"';
                }
                $cond[] = "$k=$v";
            }

            $sql .= implode('AND', $cond);
        }
    }
    die($sql);
    $pre = $this->db->prepare($sql);
    $pre->execute();
    return $pre->fetchAll(PDO::FETCH_OBJ);
}

public function findFirst($req){
   return current($this->find($req));
}

}

Ce que je veux

SELECT * FROM messages comme poste WHERE id = "test"

Ce que j'obtiens

Avertissement : mysqli_real_escape_string () s'attend à ce que le paramètre 1 soit mysqli, tableau donné dans D: \ site \ tuto \ core \ model.php à la ligne 64, SELECT * FROM comme posts WHERE id = ""

5 réponses


Carouge10
Réponse acceptée

Bonjour, tu fais de la PDO donc tu ne peux pas utiliser les fonctions mysqli_*

oui jai vu cela dans mes recherche ils disent d'utiliser PDO::quote mais je suis un apprenti je suis entrain de suivre la formation de grafikart et la je suis vraiment bloquer je sais pas comment on utilise PDO::quote

donc si vous pouvez m'aider a resourdre cela

$this->db->quote($v)
cf la doc php

merci cela a fonctionnner merci beaucoup