• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/db/mysqlidbconnection.php
  • Класс: BitrixMainDBMysqliDbConnection
  • Вызов: MysqliDbConnection::queryInternal
protected function queryInternal($sql, array $arBinds = null, $offset = 0, $limit = 0, BitrixMainDiagSqlTrackerQuery $trackerQuery = null)
{
	$this->connectInternal();

	$offset = intval($offset);
	$limit = intval($limit);

	if ($offset > 0 && $limit <= 0)
		throw new BitrixMainArgumentException("Limit should be set if offset is set");

	if ($limit > 0)
	{
		if (preg_match("#\slimit\s+\d#i", $sql))
			throw new BitrixMainArgumentException("Duplicate limit settings");

		$sql .= "nLIMIT ".intval($offset).", ".intval($limit)."n";
	}

	if ($trackerQuery != null)
		$trackerQuery->startQuery($sql, $arBinds);

	/** @var $con mysqli */
	$con = $this->resource;
	$result = $con->query($sql, MYSQLI_STORE_RESULT);

	if ($trackerQuery != null)
		$trackerQuery->finishQuery();

	$this->lastQueryResult = $result;

	if (!$result)
		throw new SqlException('Mysql query error', $this->getErrorMessage());

	return $result;
}