anoniem Geplaatst: 9 mei 2004 Delen Geplaatst: 9 mei 2004 Ik zit met een klein probleempje. Ik heb een totomod geschreven voor phpBB. Nadat de uitslag is ingevuld is er de mogelijkheid die met een undoknop weer ongedaan te maken. De uitslag die weggeschreven was in de database moet dan met NULL overschreven worden. Dus echt leeg en geen spatie oid. Ik krijg dat echter niet voor elkaar. Op de server draait: PHP Version 4.3.6 MySQL 4.0.18 Quote Link naar reactie
anoniem Geplaatst: 9 mei 2004 Auteur Delen Geplaatst: 9 mei 2004 MySQL doet sowieso vreemd met NULL, het is veel slimmer om gewoon het veld leeg te maken en daar dan op te checken... Quote Link naar reactie
anoniem Geplaatst: 10 mei 2004 Auteur Delen Geplaatst: 10 mei 2004 Niet alleen MySQL doet raar met NULL, je kan het gebruik ervan dus sowieso altijd beter vermijden... - Bas Quote Link naar reactie
anoniem Geplaatst: 10 mei 2004 Auteur Delen Geplaatst: 10 mei 2004 Sjoerd, Post eens de SQL-string die je naar de DB stuurt. Bill, Bas, Wat gaat raar met NULL? -Rémy Quote Link naar reactie
anoniem Geplaatst: 10 mei 2004 Auteur Delen Geplaatst: 10 mei 2004 Het gebruik van count() kan wel eens tot "rare" resultaten leiden... count(*) is inclusief NULL, maar count(kolom) is exclusief NULL. En zo zijn er volgens mij nog wel een paar. Iig is mij geleerd om in het database ontwerp zoveel mogelijk het gebruik van NULL te beperken, dat had ook iets met schaalbaarheid te maken. Hoe het precies zat zou ik even op moeten zoeken... Dit is overigens allemaal niet MySQL-specifiek, voor zover ik weet. - Bas Quote Link naar reactie
anoniem Geplaatst: 10 mei 2004 Auteur Delen Geplaatst: 10 mei 2004 [quote:a5e76aa84e="Remytje"]Wat gaat raar met NULL?[/quote:a5e76aa84e]Lees [url=http://sql-info.de/mysql/gotchas.html]dit[/url] maar eens, staan overigens nog veel meer MySQL kronkels in... Quote Link naar reactie
anoniem Geplaatst: 10 mei 2004 Auteur Delen Geplaatst: 10 mei 2004 Ik zou je ook aanraden om gewoon een leeg veld te gebruiken, maar hier is in ieder geval de code om een NULL waarde in een veld te zetten: [code:1:14e7729322]INSERT INTO tabel (veld1, veld2) VALUES ('Volgende veld wordt null...', NULL);[/code:1:14e7729322] In een UPDATE query zou het dit worden: [code:1:14e7729322]UPDATE tabel SET veld1 = NULL;[/code:1:14e7729322] Let erop dat je geen aanhalingstekens rond het woord NULL zet in de query. Groetjes, Vic Quote Link naar reactie
anoniem Geplaatst: 10 mei 2004 Auteur Delen Geplaatst: 10 mei 2004 [quote:57e5a02467="Vic"][code:1:57e5a02467]INSERT INTO tabel (veld1, veld2) VALUES ('Volgende veld wordt null...', NULL);[/code:1:57e5a02467][/quote:57e5a02467] Ik hoef alleen maar te updaten, want bij insert komt er nooit direct een waarde in dat veld, want de uitslag is nooit voor de wedstrijd al bekend. [quote:57e5a02467="Vic"]In een UPDATE query zou het dit worden: [code:1:57e5a02467]UPDATE tabel SET veld1 = NULL;[/code:1:57e5a02467][/quote:57e5a02467] Dit had ik al geprobeerd en het werkt niet. Ik gebruik nu maar even dit: [code:1:57e5a02467] $sql = "UPDATE " . COMPETITION_TABLE . " SET result ='' WHERE id = $comp_id "; [/code:1:57e5a02467] Ik ga idd denk ik maar de boel verbouwen en er standaard een 0 in zetten oid. Quote Link naar reactie
anoniem Geplaatst: 10 mei 2004 Auteur Delen Geplaatst: 10 mei 2004 [quote:f4391ea974="BasHamar"]count(*) is inclusief NULL, maar count(kolom) is exclusief NULL.[/quote:f4391ea974] Het is maar wat je raar noemt natuurlijk. Ik vind de doodnormaalste zaak van de wereld. ;) Overigens is er wel wat voor te zeggen dat je NULL's probeert te vermijden, maar het is niet altijd de beste oplossing (zoals in een andere post wordt gesuggereerd) om daarvoor een leeg veld toe te voegen (of bijvoorbeeld een 0). Deze waarden kunnen namelijk ook een "echte" waarde vertegenwoordigen en daarmee kan je bij andere (aggregate) functies weer foutieve uitkomsten krijgen. Maar als je dan toch NULL's wil gebruiken dan moet je er dus wel goed mee omgaan. Vooral bij concats van strings moet je opletten (daar wordt dan ook vaak voorgesteld om helemaal geen NULL's te gebruiken). Als je een beetje rondkijkt op internet zul je overigens zien dat deze discussie ook al tot in den treure is gevoerd in het DB wereldje. En vaak lopen die uit op een (semi-)wetenschappelijke geblaat ;) Komt er op neer dat het volgens theorie dit en standpunt dat absoluut not-done is om te gebruiken, maar helaas zijn de voorgestelde oplossingen vaak weer niet goed bruikbaar in de praktijk. Tja, en dan is het voor mij al heel snel einde discussie :P Quote Link naar reactie
anoniem Geplaatst: 12 mei 2004 Auteur Delen Geplaatst: 12 mei 2004 [quote:3a7e6cb55f="Bill Gates"]Lees [url=http://sql-info.de/mysql/gotchas.html]dit[/url] maar eens, staan overigens nog veel meer MySQL kronkels in...[/quote:3a7e6cb55f]LOL ;). Mijn waardering voor MySQL is nog meer in waarde gedaald en mijn waardering was al weinig (maar ja het is dan ook geen RDBMS.) Sjoerd, volgens mij zou je het met deze link toch moeten kunnen oplossen (mits je nog met NULL wil werken). Bedankt voor de link, Bill! [quote:3a7e6cb55f="Annie"]Het is maar wat je raar noemt natuurlijk. Ik vind de doodnormaalste zaak van de wereld. ;)[/quote:3a7e6cb55f]En ik ook ;). [quote:3a7e6cb55f="Annie"]Als je een beetje rondkijkt op internet zul je overigens zien dat deze discussie ook al tot in den treure is gevoerd in het DB wereldje. En vaak lopen die uit op een (semi-)wetenschappelijke geblaat ;) Komt er op neer dat het volgens theorie dit en standpunt dat absoluut not-done is om te gebruiken, maar helaas zijn de voorgestelde oplossingen vaak weer niet goed bruikbaar in de praktijk. Tja, en dan is het voor mij al heel snel einde discussie :P[/quote:3a7e6cb55f]Die discussie moet juist blijven en hevig gevoerd worden ;)! NULL hoort niet in een database, alleen de huidige RDBMS'en en SQL maken dit erg moeilijk\onmogelijk om dit voor elkaar te krijgen. In theorie is geen enkel huidige RDBMS op de markt zelfs 100% relationeel. Maar zonder druk (discussie) veranderen de huidige RDBMS niet naar een systeem welke in theorie de beste oplossing is. -Rémy Quote Link naar reactie
anoniem Geplaatst: 12 mei 2004 Auteur Delen Geplaatst: 12 mei 2004 [quote:1960c02a3d="Remytje"]Sjoerd, volgens mij zou je het met deze link toch moeten kunnen oplossen (mits je nog met NULL wil werken). Bedankt voor de link, Bill![/quote:1960c02a3d] Ik zie alleen staan hoe ik met INSERT een waarde op NULL zet, maar niet met UPDATE. Als ik de manier van INSERT probeer bij UPDATE krijg ik een error. Ik ga het gewoon oplossen met een defaultwaarde in het veld. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen