php - PDOStatement::bindParam && PDOStatement::bindValue not working -


i've been reading lot of posts here in stackoverflow , documentation info @ php dot net.

here's code i'm tryng:

example 1

$id = 1; $sth = $this->pdo->prepare('select * users_table id_usr = ?'); $sth->execute(array(intval($id))); 

example 2

$id = 1; $sth = $this->pdo->prepare('select * users_table id_usr = :id'); $sth->bindparam(':id', $id, pdo::param_int); $sth->execute(); 

example 3

$id = 1; $sth = $this->pdo->prepare('select * users_table id_usr = :id'); $sth->bindvalue(':id', intval($id)); $sth->execute(); 

if try this:

$sth = $this->pdo->prepare('select * users_table id_usr = 1'); $sth->execute(); 

i result i'm expecting it's not solution i'm looking for.

hope can me, in advance.

////////// edit 1

at end of of examples i'm doing this:

$arr = $sth->errorinfo(); print_r($arr); 

the return is:

array ( [0] => 00000 [1] => [2] => )

/////////// edit 2

here's code

class user {      private $registry;     private $userid;     private $userlan;     private $fullname;     private $dob;     private $email;     private $sex;     private $nationality;     private $valid; // user valid?     private $pdo; // pdo reference      /**      * constructor del usuario. se puede construir de dos formas, pasando email y password o pasando una id de usuario.      * @param registry $registry.      * @param int $id      * @param string $email      * @param string $password      * @param string $username      * @return void      */     public function __construct ( registry $registry, $id, $email, $password, $username)     {             echo "constructor user id = $id ";             $this->valid = false;         $this->registry = $registry;         if($id = 0 && $username != '' && $password != '')         {                     // ...                     $this->valid = true;         }         //else if($id > 0)             else         {             // $id = intval($id);                 echo "second if";                 $this->pdo = $registry->getobject('db')->getpdo();                 try                 {                     $sth = $this->pdo->prepare('select * users_table id_usr = :id');                     $sth->execute(array(':id' => intval($id)));                     //$sth->execute(array(intval($id)));                     $arr = $sth->errorinfo();                     print_r($arr);                     $result = $sth->fetch(pdo::fetch_both);                     print_r($result);                 }                 catch(pdoexception $e)                 {                     echo $e->getmessage();                 }                 echo "passing query";                 if($sth->rowcount() ==1)                     echo "yeeeha";                 else                     echo "not yeeha (".$sth->rowcount().") ";                     // ...                     $this->valid = true;         }     } 

your error checking not correct:

$sth = $this->pdo->prepare('select * users_table id_usr = :id'); $sth->bindparam(':id', $id, pdo::param_int); $sth->execute(); $arr = $sth->errorinfo(); 

this assumes pdo::prepare() returns object, that's not documentation says:

return values

if database server prepares statement, pdo::prepare() returns pdostatement object. if database server cannot prepare statement, pdo::prepare() returns false or emits pdoexception (depending on error handling).

i suggest make life easier , configure pdo throw exceptions. example taken from manual:

$dbh = new pdo($dsn, $user, $password); $dbh->setattribute(pdo::attr_errmode, pdo::errmode_exception);                                       ^^^^^^^^^^^^^^^^^^^^^^ 

Comments

Popular posts from this blog

php - get table cell data from and place a copy in another table -

javascript - Mootools wait with Fx.Morph start -

php - Navigate throught databse rows -