php - php中如何区分选择查询和非选择查询

标签 php mysql pdo

我正在编写一个用户定义的函数来执行 SQL 查询。 通常,无论我在哪里编写 sql 语句,我都必须编写 try catch block 。 我不想这样做,而是想编写一个函数并将查询传递给该函数并编写 try catch block 并从该函数返回结果。我想要在该函数中做的就是

  1. 如果查询执行成功,则

    a.对于非选择查询返回 true

    b.如果是选择查询则返回获取的行

  2. 如果查询失败执行返回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/

相关文章:

mysql - eJabberd mysql_conn undef

mysql - 检索具有最大值的行中的所有值

php - 使用 PDO 和 PHP 从 SQL 表中获取最后插入记录的 id

php - 如何在SQL中打印表名包含对象的行?

java - php 中的变量不会显示在 android 上(使用 json)

php - 消息合并 : `invalid control sequence` when printing a price with a dollar sign

php - 在 PHP 中确保传统转义函数 SQL 注入(inject)安全?

php - 根据选择选项标签更改输入值

php - Mysql真正的转义字符串和SQL select

php - 如何查看准备好的 PDO SQL 语句