2014-07-24 53 views
0

我正在寫一個用戶定義函數來執行sql查詢。 通常我必須編寫try catch塊,無論我在寫SQL語句。 而不是這樣做,我想編寫一個函數,並將查詢傳遞給該函數,並寫入try catch塊並返回該函數的結果。我只想在功能做的是如何區分選擇和非選擇查詢在php

  1. 如果查詢成功地再

    一個執行。對非選擇查詢返回true

    b。返回讀取的行如果選擇查詢

  2. 如果查詢失敗執行回FASLE

我能夠返回sucess或查詢執行的失敗,而是使用select傳遞給函數當我stucked。有人可以建議一個解決這個問題的方法。

這裏是僞代碼

function oxeDbQueryExecute($query, $dbObject){ 
    $returnValue = false; 
    try{ 
     $resultSetObject = $dbObject->query($query); 
     if($resultSetObject){ // query executed successfully 
      $returnValue = true; 
      if(selectquery){ // if pdo statement contains any rows because of the executed query is a select query 
       $returnValue = an array containg all the rows 
      }    
     } 
    }catch(PDOException $exception){ 
     error_log($exception->getMessage()); 
    } 

    return $returnValue; 
} 
+0

我們也許可以看到你的代碼是什麼這麼遠?我無法理解這一點,沒有任何背景。 – ljacqu

+0

對PDO不太確定,但'mysqli_query'默認是這樣做的:[在失敗時返回FALSE。對於成功的SELECT,SHOW,DESCRIBE或EXPLAIN查詢,mysqli_query()將返回一個mysqli_result對象。對於其他成功的查詢mysqli_query()將返回TRUE。](http://php.net/manual/en/mysqli.query.php) –

+0

@ljacqu爲您的參考我添加了一些僞代碼。希望能夠明確 –

回答

0
// defining function 
function oxeDbQueryExecute($query, $dbObject){ 
    $returnValue = false; 
    try{ 
     $resultSetObject = $dbObject->query($query); 
     if($resultSetObject){ // checking query executed successfully or not 
      $returnValue = true; 
      /* 
       ** checking result set is having any records or not. 
       ** Result set will have rows if the query is "select" type query. 
       ** In this case return array consisting rows in the format of objects 
      */ 
      $rowOfObjects = $resultSetObject->fetchAll(PDO::FETCH_OBJ); 
      if(count($rowOfObjects)){ 
       $returnValue = $rowOfObjects; 
      } 
     } 
    }catch(PDOException $exception){ 
     error_log($exception->getMessage()." Query : ".$query.""); 
    }  
    return $returnValue; 
} 

// creating databse connection 
$db = new PDO("sqlite:D:/****/****/300/******_*_En/Query_ImageAnno.data"); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // to make thorw exceptions instead of fatal error 

$queryResult = oxeDbQueryExecute("insert into chapter('tfoken')values('dfdf')", $db); 
if($queryResult){ 
    if(count($queryResult)){ // if executed query is select type query 
     print_r($queryResult); 
    } 
}else{ 
    echo "failed"; 
}