Développer un site

Par macinsteph, il y a 10 ans


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

2 réponses

Carouge10, il y a 10 ans

Bonsoir,

Je pense plutôt que le problème viens de l'appel du find...

macinsteph, il y a 10 ans

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)