/**
  * Tests for DBI::getColumnMapFromSql() method.
  *
  * @return void
  * @test
  */
 public function testPMAGetColumnMap()
 {
     $extension = $this->getMockBuilder('PMA\\libraries\\dbi\\DBIDummy')->disableOriginalConstructor()->getMock();
     $extension->expects($this->any())->method('realQuery')->will($this->returnValue(true));
     $meta1 = new FieldMeta();
     $meta1->table = "meta1_table";
     $meta1->name = "meta1_name";
     $meta2 = new FieldMeta();
     $meta2->table = "meta2_table";
     $meta2->name = "meta2_name";
     $extension->expects($this->any())->method('getFieldsMeta')->will($this->returnValue(array($meta1, $meta2)));
     $dbi = new PMA\libraries\DatabaseInterface($extension);
     $sql_query = "PMA_sql_query";
     $view_columns = array("view_columns1", "view_columns2");
     $column_map = $dbi->getColumnMapFromSql($sql_query, $view_columns);
     $this->assertEquals(array('table_name' => 'meta1_table', 'refering_column' => 'meta1_name', 'real_column' => 'view_columns1'), $column_map[0]);
     $this->assertEquals(array('table_name' => 'meta2_table', 'refering_column' => 'meta2_name', 'real_column' => 'view_columns2'), $column_map[1]);
 }
 /**
  * Handle compatibility options
  *
  * @param PMA\libraries\DatabaseInterface $dbi     Database interface
  * @param array                           $request Request array
  *
  * @return void
  */
 private function _setSQLMode($dbi, $request)
 {
     $sql_modes = array();
     if (isset($request['sql_compatibility']) && 'NONE' != $request['sql_compatibility']) {
         $sql_modes[] = $request['sql_compatibility'];
     }
     if (isset($request['sql_no_auto_value_on_zero'])) {
         $sql_modes[] = 'NO_AUTO_VALUE_ON_ZERO';
     }
     if (count($sql_modes) > 0) {
         $dbi->tryQuery('SET SQL_MODE="' . implode(',', $sql_modes) . '"');
     }
 }
    exit;
}
if (defined('TESTSUITE')) {
    /**
     * For testsuite we use dummy driver which can fake some queries.
     */
    include_once './libraries/dbi/DBIDummy.php';
    $extension = new DBIDummy();
} else {
    /**
     * First check for the mysqli extension, as it's the one recommended
     * for the MySQL server's version that we support
     * (if PHP 7+, it's the only one supported)
     */
    $extension = 'mysqli';
    if (!DatabaseInterface::checkDbExtension($extension)) {
        $docurl = PMA\libraries\Util::getDocuLink('faq', 'faqmysql');
        $doclink = sprintf(__('See %sour documentation%s for more information.'), '[a@' . $docurl . '@documentation]', '[/a]');
        if (PMA_PHP_INT_VERSION < 70000) {
            $extension = 'mysql';
            if (!PMA\libraries\DatabaseInterface::checkDbExtension($extension)) {
                // warn about both extensions missing and exit
                PMA_warnMissingExtension('mysqli|mysql', true, $doclink);
            } elseif (empty($_SESSION['mysqlwarning'])) {
                trigger_error(__('You are using the mysql extension which is deprecated in ' . 'phpMyAdmin. Please consider installing the mysqli ' . 'extension.') . ' ' . $doclink, E_USER_WARNING);
                // tell the user just once per session
                $_SESSION['mysqlwarning'] = true;
            }
        } else {
            // mysql extension is not part of PHP 7+, so warn and exit
            PMA_warnMissingExtension('mysqli', true, $doclink);
 /**
  * Test database connection
  *
  * @param string $connect_type 'tcp' or 'socket'
  * @param string $host         host name
  * @param string $port         tcp port to use
  * @param string $socket       socket to use
  * @param string $user         username to use
  * @param string $pass         password to use
  * @param string $error_key    key to use in return array
  *
  * @return bool|array
  */
 public static function testDBConnection($connect_type, $host, $port, $socket, $user, $pass = null, $error_key = 'Server')
 {
     //    static::testPHPErrorMsg();
     $error = null;
     $host = PMA_sanitizeMySQLHost($host);
     if (DatabaseInterface::checkDbExtension('mysqli')) {
         $socket = empty($socket) || $connect_type == 'tcp' ? null : $socket;
         $port = empty($port) || $connect_type == 'socket' ? null : $port;
         $extension = 'mysqli';
     } else {
         $socket = empty($socket) || $connect_type == 'tcp' ? null : ':' . ($socket[0] == '/' ? '' : '/') . $socket;
         $port = empty($port) || $connect_type == 'socket' ? null : ':' . $port;
         $extension = 'mysql';
     }
     if ($extension == 'mysql') {
         $conn = @mysql_connect($host . $port . $socket, $user, $pass);
         if (!$conn) {
             $error = __('Could not connect to the database server!');
         } else {
             mysql_close($conn);
         }
     } else {
         $conn = @mysqli_connect($host, $user, $pass, null, $port, $socket);
         if (!$conn) {
             $error = __('Could not connect to the database server!');
         } else {
             mysqli_close($conn);
         }
     }
     //    static::testPHPErrorMsg(false);
     if (isset($php_errormsg)) {
         $error .= " - {$php_errormsg}";
     }
     return is_null($error) ? true : array($error_key => $error);
 }
Example #5
0
    /**
     * Returs list of used PHP extensions.
     *
     * @return array of strings
     */
    public static function listPHPExtensions()
    {
        $result = array();
        if (DatabaseInterface::checkDbExtension('mysqli')) {
            $result[] = 'mysqli';
        } else {
            $result[] = 'mysql';
        }

        if (extension_loaded('curl')) {
            $result[] = 'curl';
        }

        if (extension_loaded('mbstring')) {
            $result[] = 'mbstring';
        }

        return $result;
    }
Example #6
0
 /**
  * Returns the real row count for a table
  *
  * @return number
  */
 function getRealRowCountTable()
 {
     // SQL query to get row count for a table.
     $result = $this->_dbi->fetchSingleRow(sprintf('SELECT COUNT(*) AS %s FROM %s.%s', Util::backquote('row_count'), Util::backquote($this->_db_name), Util::backquote($this->_name)));
     return $result['row_count'];
 }