我正在编写一个用户定义的函数来执行 SQL 查询。 通常,无论我在哪里编写 sql 语句,我都必须编写 try catch block 。 我不想这样做,而是想编写一个函数并将查询传递给该函数并编写 try catch block 并从该函数返回结果。我想要在该函数中做的就是
如果查询执行成功,则
a.对于非选择查询返回 true
b.如果是选择查询则返回获取的行
- 如果查询失败执行返回fasle
我能够返回查询执行的成功或失败,但在使用 select 传递给函数时我陷入困境。有人可以为此建议一个解决方法吗?
这是伪代码
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;
}
最佳答案
// 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";
}
关于php - php中如何区分选择查询和非选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24926184/