/** * 获取多结果集的数据 * @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; } }
/** * 获取多结果集的数据 * @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; } }