Bonsoir,
Voilà j'ai une erreur encore que je ne trouve pas qui est :
PHP Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '==2' at line 1 in /Applications/MAMP/htdocs/Site-admin-php/core/Model.php on line 63.
Quand je teste dans Model.php après le constrution de la conditions par un die($sql);, j'ai à l'affichage ceci :
SELECT * FROM posts as Post WHERE id==2
il me met 2 signes = je ne devrais en avoir qu'un.
Je ne trouve pas le problème.
Code de Model.php :
<?php
class Model{
static $connection = array();
public $conf = 'default';
public $table = false;
public $db;
public function __construct(){
// Jme connecte à 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 à la base de donnée');
}
}
// J'initialise qques variable
if($this->table === false){
$this->table = strtolower(get_class($this)).'s';
}
}
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 = '"'.mysql_escape_string($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));
}
}
?>
merci
Désolé j'ai résolu mon problème, en faite dans PagesController.php j'avais une erreur de syntax au niveau de :
'conditions' => array('id'=>$id)