do tej pory bawiłem się zwykłym mysql_* i gotowymi klasami, jednak ostatnio naszło mnie na przesiadkę na pdo... znać znałem w teorii a chciałem w praktyce. I tak zacząłem pisać klasę do db z metodami select(), insert update itp.
Początkowo działało ładnie ale pojawił się problem przy bindowaniu , mianowicie:
Ten kod mi działa:
foreach($this->structure as $key){ $up[]=" `$key` = :$key "; } } $this->sql="INSERT {$this->name} SET $up"; $this->prepare=self::$db->prepare($this->sql); if($arg){ $this->bind_t($arg); } $this->prepare->execute(); } ##### foreach($asc as $key => $val){ $this->prepare -> bindValue(':'.$key, $val, PDO::PARAM_STR); }else{ $this->prepare -> bindValue(':'.$key, $val, PDO::PARAM_INT); } } } }
Wszystko ładnie się binduje i dodaje.
Ale ten przykładowy kod już nie:
$order=' id desc '; $this->sql="select * from news order by :order "; $prepare=self::$db->prepare($this->sql); $prepare->bindParam(':order',$order,PDO::PARAM_STR); $prepare->execute(); return $prepare->fetchAll();
Ten też:
$this->sql="select * from news order by :order "; $prepare=self::$db->prepare($this->sql); return $prepare->fetchAll();
Pytanie: czemu nie działa? Co zrobić aby działało ?
(zapytanie się wykonuje ale olewa order by id desc)
Dodam że mam php5.2.9