/**
 * 获取多结果集的数据
 * @param $orgcode 租户编码
 * @param $query 查询语句
 * @param $opt 查新参数 ["type"=>"slave","timeout"=>30]
 * @return array
 * @throws Exception
 */
function multi_query($orgcode, $query, $opt = ["type" => "slave", "timeout" => 30])
{
    if (empty($opt["type"])) {
        $opt["type"] = "slave";
    }
    if (empty($opt["timeout"])) {
        $opt["timeout"] = 30;
    }
    $dbconfig = _get_dbconfig($orgcode, $opt["type"]);
    $mysqli = mysqli_connect($dbconfig["host"], $dbconfig["uid"], $dbconfig["pwd"], $dbconfig["database"]);
    $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, $opt["timeout"]);
    $tables = [];
    try {
        if ($mysqli->multi_query($query)) {
            do {
                if ($result = $mysqli->store_result()) {
                    $tables[] = $result->fetch_all(MYSQLI_ASSOC);
                    $result->free();
                }
            } while ($mysqli->more_results() && $mysqli->next_result());
        }
        return $tables;
        $mysqli->close();
    } catch (\Exception $e) {
        $mysqli->close();
        throw $e;
    }
}
Exemple #2
0
/**
 * 获取多结果集的数据
 * @param $dsninfo 租户编码orgcode或者数据库dbconfig
 * @param $query 查询语句
 * @param $opt 查新参数 ["type"=>"slave","timeout"=>30]
 * @return array
 * @throws Exception
 */
function multi_query($dsninfo, $query, $opt = ["type" => "slave", "timeout" => 30])
{
    if (empty($opt["type"])) {
        $opt["type"] = "slave";
    }
    if (empty($opt["timeout"])) {
        $opt["timeout"] = 30;
    }
    if (is_array($dsninfo)) {
        $dbconfig = $dsninfo;
    } else {
        $dbconfig = _get_dbconfig($dsninfo, $opt["type"]);
        $conn_string = ltrim($dbconfig["dsn"], "mysql:");
        $conn_parts = explode(";", $conn_string);
        foreach ($conn_parts as $part) {
            $partarr = explode("=", $part);
            $dbconfig[$partarr[0]] = $partarr[1];
        }
    }
    $mysqli = mysqli_connect($dbconfig["host"], $dbconfig["username"], $dbconfig["password"], $dbconfig["dbname"], $dbconfig["port"]);
    $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, $opt["timeout"]);
    $tables = [];
    try {
        if ($mysqli->multi_query($query)) {
            do {
                if ($result = $mysqli->store_result()) {
                    $tables[] = $result->fetch_all(MYSQLI_ASSOC);
                    $result->free();
                }
            } while ($mysqli->more_results() && $mysqli->next_result());
        }
        return $tables;
        $mysqli->close();
    } catch (\Exception $e) {
        $mysqli->close();
        throw $e;
    }
}