0

我正在做一个项目,我有一个数据库类,其中包含一些可以在整个项目中使用的功能。其中一个函数基本上执行查询并返回可能是该查询结果的任何内容。

我想将该返回值放入一个数组中。这是因为我在查询函数中调用了一个错误函数,并且也想返回它。这是我的查询功能:

//Execute query
function executeQuery($payload, $database){

    //Create database connection
    $con = connectDB($database);

    //execute query
    $result = mysqli_query($con, $payload);

    //Check for error
    $error = sqlErrorHandling($con);

    //Create return array
    $returnArray = array($error, $result);

    //Return result
    return $returnArray;    

}

我知道该sqlErrorHandling()功能有效并且我的connectDB()功能有效,但是此功能给了我错误:Cannot use object of type mysqli_result as array

我假设这是由于我放入$result了一个数组。有没有办法做到这一点?

这是给我错误的代码:

$result = executeQuery($databaseQuery, null);

        //Create local variables based off array
        list ($error, $result) = $result;

注意:不是想用这段代码来获取行的值。它很可能被用来这样做,但这应该是一个通用函数来执行查询,然后允许对该查询完成多项操作。例如使用它mysqli_num_rows等等。

4

1 回答 1

2

你的方法全错了。

首先,这个函数应该在出错的情况下抛出异常,而不是返回它
接下来,你应该连接一次,而不是每次运行查询!并将连接资源传递给函数。

这是应该的

function executeQuery($con, $query){

    //execute query
    $result = mysqli_query($con, $query);
    if (!$result) {
        throw new Exception($con->error);
    }

    //Return result
    return $result;
}
$result = executeQuery($con, $databaseQuery);

这样,您将获得结果以及正确的错误报告。

于 2013-08-09T19:49:46.203 回答