Ciao!
L'informazione sulla chiave primaria si può ottenere anche con una SHOW KEYS, tipo così ($this->connection è la risorsa connessione al DB che è sempre la stessa grazie all'adozione del pattern singleton...);
Codice PHP:
function get_primary_key($table) {
$pk = "";
$sql = "SHOW KEYS FROM ".$table;
echo $sql;
$res = mysqli_query($this->connection, $sql) or die(mysqli_error($this->connection));
while ($row = mysqli_fetch_assoc($res)) {
if ($row['Key_name']=='PRIMARY')
$pk = $row['Column_name'];
}
return $pk;
}
Il fatto è che il mio "problema" è più complesso e mi servirebbe qualcosa di "contestuale". Mi spiego: immagina di voler eseguire una Stored Procedure di cui, a priori, non conosci la forma e quindi non sai su quali tabelle lavora.
L'esecuzione della Stored Procedure crea, contestualmente, una tabella con delle radiobutton o similari a cui vuoi associare come valore la chiave della tabella visualizzata o comunque , in generale, della tabella "madre" coinvolta in join all'interno della SP.
Quindi la "forzatura" sta nel fatto che: finchè non esegui la SP non conosci il nome della tabella, ma PRIMA di eseguire la SP vorresti sapere qual'è la chiave primaria ma, quindi, non hai il nome della tabella e non puoi eseguire la SHOW!! Ovviamente non puoi eseguire get_primary_key contestualmente all'esecuzione dell'SP poichè ritorna un errore di sync (durante l'esecuzione di una query ne vuoi fare un'altra...).
E' un po' contorta come cosa
Idem se si esegue una query all'information_schema. Hummm...E' per questo che cercavo qualcosa di contestuale, cioè mentre eseguo la SP recupero i metadati tipo:
Codice PHP:
...
$fields = mysqli_fetch_fields($rows);
$name_tab = $fields->orgname;
//etc...Si sperava di poter individuare qui la chiave primaria...forse tramite i FLAGS si può?
dalla/e tabella/e conivolta/e e mi salvo l'informazione sul nome della chiave. Altrimenti, se non si potesse fare in modo diretto si può "ritardare" il recupero dell'informazione: al radiobutton si associa il nome della tabella (si ha senza problemi durante l'esecuzione della SP) e poi quando si processa il form contenente il radiobutton si esegue la SHOW, si recupera la chiave e si esegue ciò che si deve eseguire...farò così