Mysql
 sql >> Database >  >> RDS >> Mysql

Domanda PHP, MySQL, SELECT

Penso che il modo migliore per farlo sarebbe nel codice PHP, piuttosto che in SQL.

Puoi ottenere ciò semplicemente creando un array associativo in PHP, usando il campo "testo" come chiave, che contiene i dati che desideri, e popolandolo mentre estrai le informazioni dal database.

Un esempio:

SQL:SELECT * FROM myTable

Codice PHP:

<?php

// Connect to MySQL database
$result = mysql_query($sql_query_noted_above);
$stringsInfo = array();
while ($row = mysql_fetch_assoc($result))
{
    if (!isset($stringsInfo[$row['text']]))
    {
        $stringsInfo[$row['text']] = array('types' => array(), 'idAccounts' => array());
    }

    $stringsInfo[$row['text']]['types'][] = $row['type'];
    $stringsInfo[$row['text']]['idAccounts'][] = $row['idAccount'];
}

?>

Questo ti darà un array come segue:

'myTextString' => 'types' => 'type1', 'type2', 'type3'
                  'idAccounts' => 'account1', 'account2'

'anotherTextString' => 'types' => 'type2', 'type4'
                       'idAccounts' => 'account2', 'account3'

e così via.

Spero di esserti stato utile.

EDIT:Poster ha chiesto aiuto con la visualizzazione.

<?php

foreach ($stringsInfo as $string => $info)
{
    echo $string . '<br />';
    echo 'Types: ' . implode(', ', $info['types']); // This will echo each type separated by a comma
    echo '<br />';
    echo 'ID Accounts: ' . implode(', ', $info['idAccounts']);
}

/* In alternativa, puoi eseguire il loop di ogni array contenuto in $info se hai bisogno di un maggiore controllo */

foreach ($stringsInfo as $string => $info)
{
    echo $string . '<br />';
    echo 'Types: ';
    foreach ($info['types'] as $type)
    {
        echo $type . ' - ';
    }
    echo '<br />';
    echo 'ID Accounts: '
    foreach ($info['idAccounts'] as $idAccount)
    {
        echo $idAccount . ' - ';
    }
}