Merge pull request #2634 from Nicofuma/ticket/12756

[ticket/12756] Fix mysqli_fetch_assoc on hhvm

* Nicofuma/ticket/12756:
  [ticket/12756] Fix mysqli_fetch_assoc on hhvm
This commit is contained in:
Andreas Fischer 2014-06-22 00:38:36 +02:00
commit 566615fa31

View file

@ -71,10 +71,17 @@ class mysqli extends \phpbb\db\driver\mysql_base
if (version_compare($this->sql_server_info(true), '5.0.2', '>=')) if (version_compare($this->sql_server_info(true), '5.0.2', '>='))
{ {
$result = @mysqli_query($this->db_connect_id, 'SELECT @@session.sql_mode AS sql_mode'); $result = @mysqli_query($this->db_connect_id, 'SELECT @@session.sql_mode AS sql_mode');
if ($result !== null)
{
$row = @mysqli_fetch_assoc($result); $row = @mysqli_fetch_assoc($result);
@mysqli_free_result($result);
$modes = array_map('trim', explode(',', $row['sql_mode'])); $modes = array_map('trim', explode(',', $row['sql_mode']));
}
else
{
$modes = array();
}
@mysqli_free_result($result);
// TRADITIONAL includes STRICT_ALL_TABLES and STRICT_TRANS_TABLES // TRADITIONAL includes STRICT_ALL_TABLES and STRICT_TRANS_TABLES
if (!in_array('TRADITIONAL', $modes)) if (!in_array('TRADITIONAL', $modes))
@ -109,8 +116,9 @@ class mysqli extends \phpbb\db\driver\mysql_base
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mysqli_version')) === false) if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mysqli_version')) === false)
{ {
$result = @mysqli_query($this->db_connect_id, 'SELECT VERSION() AS version'); $result = @mysqli_query($this->db_connect_id, 'SELECT VERSION() AS version');
if ($result !== null)
{
$row = @mysqli_fetch_assoc($result); $row = @mysqli_fetch_assoc($result);
@mysqli_free_result($result);
$this->sql_server_version = $row['version']; $this->sql_server_version = $row['version'];
@ -119,6 +127,8 @@ class mysqli extends \phpbb\db\driver\mysql_base
$cache->put('mysqli_version', $this->sql_server_version); $cache->put('mysqli_version', $this->sql_server_version);
} }
} }
@mysqli_free_result($result);
}
return ($raw) ? $this->sql_server_version : 'MySQL(i) ' . $this->sql_server_version; return ($raw) ? $this->sql_server_version : 'MySQL(i) ' . $this->sql_server_version;
} }
@ -224,7 +234,7 @@ class mysqli extends \phpbb\db\driver\mysql_base
return $cache->sql_fetchrow($query_id); return $cache->sql_fetchrow($query_id);
} }
if ($query_id !== false) if ($query_id !== false && $query_id !== null)
{ {
$result = @mysqli_fetch_assoc($query_id); $result = @mysqli_fetch_assoc($query_id);
return $result !== null ? $result : false; return $result !== null ? $result : false;
@ -434,10 +444,13 @@ class mysqli extends \phpbb\db\driver\mysql_base
$endtime = $endtime[0] + $endtime[1]; $endtime = $endtime[0] + $endtime[1];
$result = @mysqli_query($this->db_connect_id, $query); $result = @mysqli_query($this->db_connect_id, $query);
if ($result !== null)
{
while ($void = @mysqli_fetch_assoc($result)) while ($void = @mysqli_fetch_assoc($result))
{ {
// Take the time spent on parsing rows into account // Take the time spent on parsing rows into account
} }
}
@mysqli_free_result($result); @mysqli_free_result($result);
$splittime = explode(' ', microtime()); $splittime = explode(' ', microtime());