我正在开发一个项目,我有一个数据库类,其中包含可能在整个项目中使用的一些函数。其中一个函数基本上执行查询并返回可能是该查询结果的任何内容。
我想将返回值放入数组中。这是因为我在查询函数中调用了一个错误函数,并且想要返回它。这是我的查询功能:
//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
中使用它等等。
答案 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);
这样您就可以获得结果以及正确错误报告。