PHP database error
Graag gedaan, het is makkelijker, sneller, en beter om in-geprogrammeerde dingen te gebruiken dan ze zelf te programmeren, lijkt me =p
NOG STEEDS CONTROLEER JE NIET OF JE $res EEN GELUKTE QUERY IS!!!!
JE DOET HELEMAAL NIETS MET DE TIPS DIE WIJ GEVEN...
Zo is jou helpen wel een heel moeilijke en tijdrovende klus...
Edit:
Sorry dat ik mij even liet gaan, maar dit enerveert mij enorm.
Wij geven jou tips e.d. om jouw verder te helpen waar jij helemaal niets mee doet en dan kom je terug met een vraag die al in een van de eerste posts ge-antwoord is.
Ik bekijk even je tabelstructuur, en zie dat die ook niet helemaal goed is, ik zal even een aantal dingen bespreken..
[EDIT2]
Ok, hier enkele bemerkingen:
Eerst en vooral, gebruikt nooit ’-tekens in je query, deze laten je toe om onjuiste namen te geven aan tabellen en kolommen, en dat wil je natuurlijk niet.
Nu ga ik even de verschillende kolommen en hun datatypes bespreken:
Jij gebruikt voor id een int(50). Die 50 kunnen we hier weglaten omdat php alle voorloopnullen van getallen weggooit. (die 50 die jij daar aangeeft is het aantal voorloopnullen dat mysql aan dat getal moet plakken.) Verder kunnen we ook UNSIGNED instellen, omdat we toch geen id's zullen hebben die negatief zullen zijn.
De kolom user heb ik usern genoemd omdat ik denk dat user een gereserveerd woord is, welke je dus niet mag gebruiken als naam voor een kolom. (Het kan natuurlijk zijn dat ik het mis heb, maar voor de zekerheid)
msg voorzag jij maar 255 tekens? is dat niet een beetje weinig? Ik heb een groter veld genomen genaamd TEXT. Wil je per se uw berichten beperken tot 255 tekens, dan kan je beter TINYTEXT nemen.
Geen geknoei meer met datums en tijden als je ze samen in 1 veld steekt. (mogelijkheden zijn TIMESTAMP of DATETIME) Ook verminderd voor jou werk als je mysql zelf de tijd laat invullen, dit kan door DEFAULT CURRENT_TIMESTAMP
visable zal naar ik denk enkel maar de waardes 1 of 0 hebben, en daarom stel ik voor om het type BIT(1) te nemen. Let wel, hiervoor heb je MySQL versie 5.0.5 nodig. Heb je deze versie niet, dan kan je onderstaand type nemen: visable ENUM('0','1') NOT NULL DEFAULT '1'
En als slot de volledige tabel nog even:
Oja, heb nog even voor jou de karaker set erbij gezet zodat je geen problemen krijgt met vreemde tekens.
Laat maar weten wat je ervan vindt, hopelijk heb je van mijn uitleg wat bijgeleerd. Ben je nog niet zeker of je wel het juiste datatype gekozen hebt, kijk dan even hier
Sorry dat ik mij even liet gaan, maar dit enerveert mij enorm.
Wij geven jou tips e.d. om jouw verder te helpen waar jij helemaal niets mee doet en dan kom je terug met een vraag die al in een van de eerste posts ge-antwoord is.
Ik bekijk even je tabelstructuur, en zie dat die ook niet helemaal goed is, ik zal even een aantal dingen bespreken..
[EDIT2]
Ok, hier enkele bemerkingen:
Eerst en vooral, gebruikt nooit ’-tekens in je query, deze laten je toe om onjuiste namen te geven aan tabellen en kolommen, en dat wil je natuurlijk niet.
Nu ga ik even de verschillende kolommen en hun datatypes bespreken:
Jij gebruikt voor id een int(50). Die 50 kunnen we hier weglaten omdat php alle voorloopnullen van getallen weggooit. (die 50 die jij daar aangeeft is het aantal voorloopnullen dat mysql aan dat getal moet plakken.) Verder kunnen we ook UNSIGNED instellen, omdat we toch geen id's zullen hebben die negatief zullen zijn.
De kolom user heb ik usern genoemd omdat ik denk dat user een gereserveerd woord is, welke je dus niet mag gebruiken als naam voor een kolom. (Het kan natuurlijk zijn dat ik het mis heb, maar voor de zekerheid)
msg voorzag jij maar 255 tekens? is dat niet een beetje weinig? Ik heb een groter veld genomen genaamd TEXT. Wil je per se uw berichten beperken tot 255 tekens, dan kan je beter TINYTEXT nemen.
Geen geknoei meer met datums en tijden als je ze samen in 1 veld steekt. (mogelijkheden zijn TIMESTAMP of DATETIME) Ook verminderd voor jou werk als je mysql zelf de tijd laat invullen, dit kan door DEFAULT CURRENT_TIMESTAMP
visable zal naar ik denk enkel maar de waardes 1 of 0 hebben, en daarom stel ik voor om het type BIT(1) te nemen. Let wel, hiervoor heb je MySQL versie 5.0.5 nodig. Heb je deze versie niet, dan kan je onderstaand type nemen: visable ENUM('0','1') NOT NULL DEFAULT '1'
En als slot de volledige tabel nog even:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
CREATE TABLE comments (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
sub VARCHAR(255) NOT NULL,
usern VARCHAR(255) NOT NULL,
msg TEXT NOT NULL,
datum TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
visable BIT(1) NOT NULL DEFAULT b'1'
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
sub VARCHAR(255) NOT NULL,
usern VARCHAR(255) NOT NULL,
msg TEXT NOT NULL,
datum TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
visable BIT(1) NOT NULL DEFAULT b'1'
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Oja, heb nog even voor jou de karaker set erbij gezet zodat je geen problemen krijgt met vreemde tekens.
Laat maar weten wat je ervan vindt, hopelijk heb je van mijn uitleg wat bijgeleerd. Ben je nog niet zeker of je wel het juiste datatype gekozen hebt, kijk dan even hier
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
Ts is ook aan mijn zwarte lijst toegevoegd
Ik doe toch nog even inspanning om hem een laatste kans te geven. Doet hij ook hier niets mee, dan kan hij het voor mij ook vergeten.
Netjes van je Hipska