diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/dblayer.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/dblayer.php index 58ea7b80e..b095b4dc7 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/dblayer.php +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/dblayer.php @@ -81,5 +81,113 @@ class DBLayer{ $this->PDO->commit(); return $lastId; } - -} \ No newline at end of file + /** + * + * Select function using prepared statement + * @param string $tb_name Table Name to Select + * @param array $data Associative array + * @param string $where where to select + * @return array Array containing fetched data + */ + public function select($query, $data) + { + try{ + $sth = $this->PDO->prepare($query); + $this->PDO->beginTransaction(); + $sth->execute(array($data)); + $this->PDO->commit(); + }catch(Exception $e) + { + $this->PDO->rollBack(); + throw new Exception("error selection"); + return false; + } + return $sth; + } + + /** + * + * Update function with prepared statement + * @param string $tb_name name of the table + * @param array $data associative array with values + * @param string $where where part + * @throws Exception error in updating + */ + public function update($tb_name, $data, $where) + { + $field_option_values=null; + foreach ($data as $key => $value) + { + $field_option_values.=",$key".'=:'.$value; + } + $field_option_values = ltrim($field_option_values,','); + try { + $sth = $this->PDO->prepare("UPDATE $tb_name SET $field_option_values WHERE $where "); + + foreach ($data as $key => $value) + { + $sth->bindValue(":$key", $value); + } + $this->PDO->beginTransaction(); + $sth->execute(); + $this->PDO->commit(); + }catch (Exception $e) + { + $this->PDO->rollBack(); + throw new Exception('error in updating'); + } + } + /** + * + * insert function using prepared statements + * @param string $tb_name Name of the table to insert in + * @param array $data Associative array of data to insert + */ + + public function insert($tb_name, $data) + { + $field_values =':'. implode(',:', array_keys($data)); + $field_options = implode(',', array_keys($data)); + try{ + $sth = $this->PDO->prepare("INSERT INTO $tb_name ($field_options) VALUE ($field_values)"); + foreach ($data as $key => $value ) + { + + $sth->bindValue(":$key", $value); + } + $this->PDO->beginTransaction(); + //execution + $sth->execute(); + $this->PDO->commit(); + + }catch (Exception $e) + { + //for rolling back the changes during transaction + $this->PDO->rollBack(); + throw new Exception("error in inseting"); + } + } + + /** + * + * Delete database entery using prepared statement + * @param string $tb_name + * @param string $where + * @throws error in deleting + */ + public function delete($tb_name, $where) + { + try { + $sth = $this->prepare("DELETE FROM $tb_name WHERE $where"); + $this->PDO->beginTransaction(); + $sth->execute(); + $this->PDO->commit(); + } + catch (Exception $e) + { + $this->rollBack(); + throw new Exception("error in deleting"); + } + + } +}