php pdo准备语句和转换

时间:2014-11-16 09:56:36

标签: 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 =所需语句(例如' SELECT *来自用户WHERE username =:username')///

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

在这种情况下,

& $ values =引用数组equals =(':username' =>' User'); ///

$ selectStatement =告诉是否在语句中使用SELECT,在这种情况下为TRUE ///

在这种情况下,

$ result = array by reference,最终的获取结果将存储在其中///

所以在这个例子中我们得到以下对函数的调用: applyQuery(&#39; SELECT *来自用户WHERE username =:username&#39;,TRUE,array(&#39;:username&#39; =&gt;&#39; User&#39;),TRUE,result)< / p>

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

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

0 个答案:

没有答案