php - Complicated PDO MYSQL query not working -


i've written php function allows update entry in table string values (one or multiple). pdo not throw errors, though script not seem work! i've checked name of database, tables , fields multiple times. it's correct. query in functions not work. believe has array im passing in sql statement , pdo->bindparam() function.

code:

public function updatetabledetail($table, $id, $params) {      include($this->doc_root . 'config/config.php');      if (is_array($params)) {         foreach ($params $param) {             $param = utilities::escapestring($param);         }     } else {         throw new invalidinputexception(inputerrors::notanarray);     }     if (is_nan($id)) throw new invalidinputexception(inputerrors::notanumber);     $table = utilities::escapestring($table);      $sql = "update " . $table . "             set " . $config['table_field_updated'] . " = :updated";     while (current($params)) {         $sql .= "," . key($params) . " = :" . key($params);         next($params);     }     reset($params);     $sql .= " id = :id               , " . $config['userid'] . " = :userid";      if ($this->serverconnector == null) {         $this->serverconnector = new serverconnector();     }     if ($this->db == null) {         $this->db = $this->serverconnector->openconnectiononuserdb($this->dbname);     }     $stmt = $this->db->prepare($sql);     $updated = date("y-m-d h:i:s");     $stmt->bindparam(':updated',$updated);     $stmt->bindparam(':id',$id);     $stmt->bindparam(':userid',$this->userid);     while ($param = current($params)) {         $stmt->bindparam(":".key($params),$param);         next($params);     }     reset($params);     $stmt->execute(); } 

edit: don't worry include statement, $config[]-array , class-variables. it's working aswell. tested values already.

change part:

while ($param = current($params)) {         $stmt->bindparam(":".key($params),$param);         next($params);     } 

to:

foreach($params $key => &value){ $stmt->bindparam(":$key",$value); } 

because according php manual: pdostatement::bindparam

binds php variable corresponding named or question mark placeholder in sql statement use prepare statement. unlike pdostatement::bindvalue(), variable bound reference , evaluated @ time pdostatement::execute() called.


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

javascript - addthis share facebook and google+ url -

ios - Show keyboard with UITextField in the input accessory view -