从mysqli_query()返回到数组

时间:2013-08-09 19:37:07

标签: php arrays error-handling mysqli

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

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

//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中使用它等等。

1 个答案:

答案 0 :(得分: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);

这样您就可以获得结果以及正确错误报告。