There are two MySQL tables "places" as cities and "bundesland" as areas of the following type:

PLACES place_id place_name bundesland_id 1 hannover 5 2 münchen 7 3 wofsburg 5 4 laatzen 5 5 nürnberg 7 BUNDESLAND bundesland_id bundesland_name 5 niedersachsen 7 bayern 

Tell me how to form a two-dimensional associative array of this type in PHP?

 Array niedersachsen hannover wolfsburg laatzen bayern münchen nürnberg 

    2 answers 2

    It is possible through PDO :

     $dsn = 'mysql:host=localhost;dbname=<db_name>;charset=UTF8;'; $opt = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ); $pdo = new \PDO($dsn, <user>, <password>, $opt); $sql = 'SELECT b.bundesland_name, p.place_name FROM places AS p JOIN bundesland AS b ON p.bundesland_id = b.bundesland_id;'; $data = $pdo->query($sql)->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_COLUMN); print_r($data) 

    As a result, we get something like this:

     Array ( [niedersachsen] => Array ( [0] => hannover [1] => wofsburg [2] => laatzen ) [bayern] => Array ( [0] => münchen [1] => nürnberg ) ) 

    Read http://www.cyberforum.ru/php-database/thread559961.html


    code by reference:

     mysql_select_db("zbase", $con); $sql = "SET NAMES 'cp1251'"; mysql_query($sql); $r=mysql_query ("SELECT sh.COLUMN_NAME, sh.table_name FROM INFORMATION_SCHEMA.Columns sh WHERE sh.TABLE_NAME IN (SELECT inf.table FROM zbase.info inf)AND table_schema = 'zbase'"); $table_name=''; $table_count=-1; while ($a = mysql_fetch_array($r)) { if ($table_name!==$a[1]) { $table_name=$a[1]; $table_count++; $array[$table_count][0]=$table_name; $field_count=1; } $array[$table_count][$field_count] = $a[0]; $field_count++; } print_r ($array);