PMA\libraries\DatabaseInterface::getColumnMapFromSql PHP Méthode

getColumnMapFromSql() public méthode

returns detailed array with all columns for sql
public getColumnMapFromSql ( string $sql_query, array $view_columns = [] ) : array
$sql_query string target SQL query to get columns
$view_columns array alias for columns
Résultat array
    public function getColumnMapFromSql($sql_query, $view_columns = array())
    {
        $result = $this->tryQuery($sql_query);
        if ($result === false) {
            return array();
        }
        $meta = $this->getFieldsMeta($result);
        $nbFields = count($meta);
        if ($nbFields <= 0) {
            return array();
        }
        $column_map = array();
        $nbColumns = count($view_columns);
        for ($i = 0; $i < $nbFields; $i++) {
            $map = array();
            $map['table_name'] = $meta[$i]->table;
            $map['refering_column'] = $meta[$i]->name;
            if ($nbColumns > 1) {
                $map['real_column'] = $view_columns[$i];
            }
            $column_map[] = $map;
        }
        return $column_map;
    }

Usage Example

 /**
  * 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]);
 }