Ik heb de volgende query. Op mijn server werkt die perfect, maar bij sommige niet. Dan wordt of de tabel of het vullen van de tabel niet goed uitgevoerd. Hoe dit op te lossen? Ik weet dat de gekozen namen, set, item niet handig gekozen zijn, maar daat gaat het nu even niet om:
function bbmenu_install() {
global $bbdb;
$query = "CREATE TABLE `$bbdb->menu` (
`item_id` INT(3) NOT NULL AUTO_INCREMENT,
`item` varchar(50) NOT NULL default '',
`set` varchar(50) NOT NULL default '',
`page` varchar(50) NOT NULL default '',
`location` varchar(50) NOT NULL default '',
`order` int(9) NOT NULL default '0',
PRIMARY KEY (`item_id`)
);
";
$bbdb->query($query);
mysql_query ("INSERT INTO `$bbdb->menu` VALUES
(DEFAULT, 'Forums', 'active', 'index.php', 'front-page', 0),
(DEFAULT, 'Search', 'active', 'search.php', 'search-page', 1),
(DEFAULT, 'Statistics', 'inactive', 'statistics.php', 'stats-page', 0);");
}
Waarom wil je tabellen dynamisch aanmaken? Dat is vrijwel zonder uitzondering vragen om problemen. Het is alleen goed voor jouw eigen versie van PHPMyAdmin.
Backtics gooi je uiteraard weg en hier en daar verzin je een wat betere naam. set en order gaan problemen opleveren.
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in.../forums.geekpulp.co.nz/my-plugins/bbmenu.php on line 314
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in .../forums.geekpulp.co.nz/my-plugins/bbmenu.php on line 314
En dit script maakt onderdeel uit van een plugin en dient daarom aangemaakt te worden. En die namen weet ik ook, (hoewel het in backticks niet zou hoeven uitmaken).
De vraag is waarom het bij sommige wel werkt en bij andere niet en hoe het op te lossen...
[quote='Frank schreef op 02.04.2007 19:20']Backtics gooi je uiteraard weg en hier en daar verzin je een wat betere naam. set en order gaan problemen opleveren.
Die backtics zijn anders nog best wel handig voor voor gereserveerde worden in mysql:)
Of niet?[/quote]
Je kan ze inderdaad gebruiken om gereserveerde woorden als kolomnaam te kunnen gebruiken, maar handig is het niet. Je gaat alleen maar fouten maken. En vaak zijn kolomnamen die tevens gereserveerde woorden zijn, niet duidelijk omschrijvend voor de inhoud.
Je kan ze ook gebruiken om spaties in kolomnamen te doen, maar vroeg of laat ga je hierdoor fouten maken, en het werkt prima zonder. dus waarom ze gebruiken?
[quote='Frank schreef op 02.04.2007 19:20']Backtics gooi je uiteraard weg en hier en daar verzin je een wat betere naam. set en order gaan problemen opleveren.
Die backtics zijn anders nog best wel handig voor voor gereserveerde worden in mysql:)
Of niet?[/quote]Het jezelf aanleren van foute SQL is inderdaad vreselijk handig. Vooral wanneer dat extra problemen en fouten op gaat leveren...