Salve a tutti.
In che modo posso mettere all'interno di un array il nome dei campi di una tabella che consentono solo valori non null?
Grazie!
Salve a tutti.
In che modo posso mettere all'interno di un array il nome dei campi di una tabella che consentono solo valori non null?
Grazie!
uno spunto da cui partire
http://se.php.net/manual/it/function...ield-flags.php
![]()
Codice PHP:
$campi_non_null = array();
$risultato = mysql_query("SELECT * from tabella LIMIT 1");
for ($i=0,$campi = mysql_num_fields($risultato); $i < $campi; $i++) {
$nome = mysql_field_name($risultato, $i);
$flag = mysql_field_flags($risultato, $i);
strstr($flag,'not_null') ? $campi_non_null[$nome] = $flag : '';
}
echo '<pre>';
print_r($campi_non_null);
Grazie mille!!!
Però, copiando il codice che mi hai indicato, se provo a stampare soltanto la lista dei nomi dei campi con:
ottengo il seguente output:Codice PHP:
for ($i=0,$campi = mysql_num_fields($risultato); $i < $campi; $i++) {
$nome = mysql_field_name($risultato, $i);
echo $nome."
";
}
Field
Type
Null
Key
Default
Extra
che non sono i nomi dei campi...
Dove sbaglio?
[però ho usato la query
anzichè quella che hai usato tu, ma ho verificato che ottengo effettivamente i nomi dei campi]Codice PHP:
$query="DESCRIBE tabella";
Se usi describe allora lo script va fatto diversamente
Codice PHP:
$campi_not_null = array();
$query = mysql_query("describe tabella");
while ($row = mysql_fetch_assoc($query) ) {
$row['Null'] == 'NO' ? $campi_not_null[] = $row['Field'] : '';
}
echo '<pre>';
print_r($campi_not_null);
Ciao, scusa se ti rispondo solo adesso.
In questo secondo script ottengo però solo il risultato:
pur avendo, nella tabella, 3 campi not_null e 2 campi null.Codice PHP:
Array
(
)
L'ho provato prima di postare e funziona correttamente.Originariamente inviato da Etruska
Ciao, scusa se ti rispondo solo adesso.
In questo secondo script ottengo però solo il risultato:
pur avendo, nella tabella, 3 campi not_null e 2 campi null.Codice PHP:
Array
(
)
Controlla che non sia sbagliato il nome della tabella.
Codice PHP:
$campi_not_null = array();
$query = mysql_query("describe tabella") or die(mysql_error() ); // ho aggiunto la segn.d'errori
while ($row = mysql_fetch_assoc($query) ) {
$row['Null'] == 'NO' ? $campi_not_null[] = $row['Field'] : '';
}
echo '<pre>';
print_r($campi_not_null);
Scoperto l'inghippo!
Non è
;Codice PHP:
$row['Null'] == 'NO' ? $campi_not_null[] = $row['Field'] : ''
ma
dopo while, facendo:Codice PHP:
$row['Null'] == ' ' ? $campi_not_null[] = $row['Field'] : '';
trovo che i primi 3 campi, quelli not null, vengono visti come vuoti (Codice PHP:
echo "- ".$row['Null']."
";
)
![]()
GRAZIE DI TUTTO!!!
Dipenderà dalla versione di mysql.
Nella mia se faccio describe table in corrispondenza del campo 'Null' mi scrive NO oppure YES. Evidentemente non è un comportamento standard.![]()
E' la 4.0.27
La cosa curiosa è che in phpmyadmin effettivamente i valori sono no e yes!