PHP versus MySQL
Er zijn wel PHP functies om informatie over een type veld te krijgen, zoals mysql_field_type () maar die leveren niet de info die ik wil hebben. Die vertelt me wel DAT het een enum is, maar niet WAT er in die enum aan mogelijke waarden zit.
Gelukkig biedt MySQL uitkomst. Met het commando DESCRIBE, of SHOW COLUMNS FROM kun je informatie opvragen over kolommen in je db. De syntax verschilt enigszins (geen idee waarom). Die van DESCRIBE is korter en zonder quotes.
2
3
4
5
6
7
8
9
10
11
12
13
14
+------+---------------------------------------+----+----+---------+-----+
|Field |Type |Null |Key|Default |Extra|
+------+---------------------------------------+----+----+---------+-----+
|status|enum('nog niet binnen','nog niet ...| | |bewaren| |
+------+---------------------------------------+----+----+---------+-----+
of zo (geeft precies hetzelfde resultaat):
SHOW COLUMNS FROM artikelen LIKE 'status'
+------+---------------------------------------+----+----+---------+-----+
|Field |Type |Null |Key|Default |Extra|
+------+---------------------------------------+----+----+---------+-----+
|status|enum('nog niet binnen','nog niet ...| | |bewaren| |
+------+---------------------------------------+----+----+---------+-----+
Kijk, da's interessant! Bij 'Field' krijg ik keurig de naam van mijn enum veld en bij 'Type' de inhoud :-) Nu kan ik met PHP aan de gang. De code voor verbinden met en selecteren van de database sla ik hier even over:
2
3
4
5
6
7
8
9
10
11
12
13
14
// query opstellen
$sql = "DESCRIBE artikelen status";
if (!($res = mysql_query ($sql))) {
trigger_error (mysql_error ());
}
else {
// we weten zeker dat het om 1 record
// gaat, dus geen while loop nodig
$obj = mysql_fetch_object ($res);
$name = $obj->Field;
$enums = $obj->Type;
}
?>