php准备语句和转录,功能

时间:2014-11-17 11:50:21

标签: php mysql pdo

我正在尝试编写一个应该接收任何MySQL语句并应用它的函数,

基本思路不是重复编写数据库所需的代码,连接数据库所需的是创建新的PDO对象,启动事务并准备语句,将值绑定到它,执行它,

因此,每次我想访问数据库时,我都不必重复这些步骤,

这是一个执行此操作的函数:

=============================================== ===============================================

 protected function applyQuery($statement, $bindparameters , &$values , $selectStatement, &$result){
try{
   $dbh = DataBase::setConnection();// new PDO("MySQL= .....");
   $dbh->beginTransaction();
   $stmt = $dbh->prepare($statement);

   if($bindparameters == true){
       foreach($values as $key => $value){
           $stmt->bindValue($key, $value);
       }
   }
   $stmt->execute();
   $dbh->commit();
   if($selectStatement == TRUE){
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
   }
    }catch (PDOException $e){
        $dbh->rollBack();
    throw DataBase::$Errors[0];
   }

}

=============================================== =============================================

$statement =所需的陈述(e.g 'SELECT * from users WHERE username = :username')

$bindparameters =我们需要绑定值(在此示例中为yes),因此其值TRUE

&$values =在这种情况下,引用数组为equals = (':username' => 'User');

$selectStatement =告诉是否在语句中使用SELECT,在本例中为TRUE

$result =在这种情况下引用数组,最终的获取结果将存储在其中

所以在这个例子中我们得到以下对函数的调用:

 applyQuery('SELECT * from users WHERE username = :username', TRUE ,
 array(':username' => 'User') , TRUE , result )

我的问题是:这段代码会起作用吗?它是什么,应该有意义的逻辑顺序?什么是$ stmt->执行和$ dbh-> commit之间的区别?省略任何一行都会导致无法达到预期效果

请理解我确实查找了什么是PDO并阅读了很多但无法回答这些问题!

0 个答案:

没有答案