tabel aanmaken met variabele
Op deze manier wil ik elke gebruiker een eigen tabel gaan geven die aangemaakt wordt tijdens het registreren.
Volgens mij maak ik ergens een foutje want ik krijg de tabel niet aangemaakt.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$setup ="create table {$_POST['voorbeeld']} (
klantnummer INT(10) NOT NULL,)";
mysql_query($setup);
if (!$setup) {
die("aanmaken tabel mislukt:". mysql_error() );
}
?>
$setup ="create table {$_POST['voorbeeld']} (
klantnummer INT(10) NOT NULL,)";
mysql_query($setup);
if (!$setup) {
die("aanmaken tabel mislukt:". mysql_error() );
}
?>
Als ik de kolommen weg laat wordt de tabel wel aangemaakt.
Waar zit de fout?
Ik raad het je serieus af en raad je aan te normaliseren
Maar het gaat niet omdat er een , achter "klantnummer INT(10) NOT NULL," staat
Gewijzigd op 02/11/2010 16:04:34 door Jacco Engel
Jacco Engel op 02/11/2010 16:03:42:
Je maakt idd een foutje , maar groter dan je denkt :), waarom voor elke gebruiker een tabel?
Ik raad het je serieus af en raad je aan te normaliseren
Maar het gaat niet omdat er een , achter "klantnummer INT(10) NOT NULL," staat
Ik raad het je serieus af en raad je aan te normaliseren
Maar het gaat niet omdat er een , achter "klantnummer INT(10) NOT NULL," staat
Tja, normaliseren is een moeilijk begrip voor iemand die net alles aan het ontdekken is, maar ik doe mijn best.
Ik wil graag een eigen tabel voor elke gebruiker (max 1000) omdat het anders wel een erg grote tabel gaat worden, wat volgens mij de snelheid niet te goede komt.
De gebruikers staan wel ik een gezamelijke tabel met hun gegevens etc. Je moet het zo voorstellen dat elke gebruiker dagelijks +/- 5 regels toevoegt in zijn eigen tabel (door bijvoorbeeld iets te verkopen). Ze moeten dus elke een tabel krijgen waarin staat wat ze hebben verkocht, op welke tijd , voor welke prijs etc.
Toevoeging op 02/11/2010 16:28:24:
Het is gelukt, die komma stond er omdat er nog meer kolommen kwamen, maar op de verkeerde plek dus ;-)
Bedankt!
Klopt mijn bovenstaande redenatie trouwens, op ben ik echt abnormaal bezig?
hoeveel records verwacht je :)?
dus max 500000 per jaar in totaal.
Gewijzigd op 02/11/2010 16:41:10 door Peter van den Dungen
Goede indexen en een goede indeling en je DB licht er volgens mij niet wakker van :P
Gebruik dus niet voor elke user een aparte tabel, maar houd gewoon in 1 tabel bij wat er gekocht/verkocht is en door welke gebruiker. Als je gaat normaliseren zul je zien dat je ook op zo'n model uitkomt :-)
Elke gebruiker krijgt dus een eigen omgeving waar hij zijn verkochte producten kan zien. Dit duurt dus niet te lang om te laden bij een goede index? Er vanuit gaande dat er dus 3 miljoen records zijn?
Gewijzigd op 02/11/2010 16:47:15 door Peter van den Dungen
Één grote chaos, een database niet meer werkt, tabellen / records die niet meer opvraagbaar zijn.
Een klein voorbeeldje: stel nu dat je wilt weten hoeveel producten er in de afgelopen week gekocht zijn. In dat geval zul je vanuit PHP alle gebruikerstabellen langs moeten gaan en moeten bepalen welke records er afgelopen week bijgekomen zijn, vervolgens moet je dat in PHP gaan samenvoegen en berekeningen op gaan los laten. Omslachtig dus.
Gebruik je een correct datamodel, dan is dit een kwestie van een simpele query met COUNT() op de tabel waarin je alle transacties opgeslagen hebt :-)
Ben nu wat aan het lezen over indexen, heb je een goede site met duidelijke uitleg toevallig?
Peter van den Dungen op 02/11/2010 16:50:55:
dat is een hele goede inderdaad. Bedankt!
Ben nu wat aan het lezen over indexen, heb je een goede site met duidelijke uitleg toevallig?
Ben nu wat aan het lezen over indexen, heb je een goede site met duidelijke uitleg toevallig?
Meestal ga je eerst een logisch databasemodel maken.
Dus eerst bedenk je welke gegevens je hebt. Dan ga je dat in tabellen stoppen en normaliseren.
Daarna pas ga je je fysieke model aanpassen door indexen toe te voegen.
Okee, ik kan weer even verder!
Code (php)
1
2
3
4
2
3
4
<?php
$setup = "Bla Bla";
mysql_query($setup) or die("Aanmaken tabel mislukt: ". mysql_error());
?>
$setup = "Bla Bla";
mysql_query($setup) or die("Aanmaken tabel mislukt: ". mysql_error());
?>
Dit soort nutteloze reacties mag je voortaan achterwege laten. Aanvulling: graag eerst het topic lezen alvorens te reageren.[/modedit]
Gewijzigd op 02/11/2010 17:55:03 door Joren de Wit
Gnotrgnotr gnotrgnotr op 02/11/2010 17:44:20:
Code (php)
1
2
3
4
2
3
4
<?php
$setup = "Bla Bla";
mysql_query($setup) or die("Aanmaken tabel mislukt: ". mysql_error());
?>
$setup = "Bla Bla";
mysql_query($setup) or die("Aanmaken tabel mislukt: ". mysql_error());
?>
NEEE!
$setup is geen goede naam om een query in te stoppen.
Verder moet je geen die gebruiken. Het script hoeft totaal niet dood als er wat mis is gegaan. Laat het net eindigen, met een foutmelding.
Gebruik niet mysql_error o.i.d. om de foutmelding te maken. Hackers kunnen die meldingen misbruiken.
Gewijzigd op 02/11/2010 17:53:07 door Maarten PHP
Met name stuk veiligheid vind ik erg moeilijk.
Toevoeging op 02/11/2010 17:55:09:
Waarom geen $setup trouwens ??
Gnotrgnotr gnotrgnotr op 02/11/2010 17:51:20:
En de poster van dit topic dan die gebruikt mysql_error() zoals hij zijn script had gemaakt kon je beter op mijn manier doen ja als hij mysql_error() wilt gebruiken dat laat je dat toch hij gebruikt ook functie die
Ooit gehoord van punten en komma's? (Of überhaupt Nederlands.)
Maar goed, ik doe maar een gok:
De topic starter heb ik niet eerder op de bovengenoemde punten gewezen, aangezien ik daar niet eens naar gekeken heb. De query was niet goed en zijn uitleg klopte ook niet. Dan ga ik niet naar de code kijken. Verder is jou oplossing is geen haar beter.
Ook vind ik het nogal dom gedacht van je dat hij gewoon mysql_error moet gebruiken als hij dat wilt. Dat is vragen om moeilijkheden. Als er een fout in de query zit komt de melding van mysql dus op het scherm te staan, wat dan weer in het voordeel is van de hacker. Vaak komt de gehele query of het deel van de query waar de fout in zit dan op het scherm. Hieruit kan de hacker zo afleiden wat hij moet aanpassen om controle over het systeem te krijgen.
Peter van den Dungen op 02/11/2010 17:53:29:
Ik hoor het al wel, heb nog een hoop te leren!
Met name stuk veiligheid vind ik erg moeilijk.
Toevoeging op 02/11/2010 17:55:09:
Waarom geen $setup trouwens ??
Met name stuk veiligheid vind ik erg moeilijk.
Toevoeging op 02/11/2010 17:55:09:
Waarom geen $setup trouwens ??
Omdat $setup niks zegt.
Wat moet dat zijn dan.
Peter van den Dungen op 02/11/2010 17:53:29:
Ik hoor het al wel, heb nog een hoop te leren!
Met name stuk veiligheid vind ik erg moeilijk.
Toevoeging op 02/11/2010 17:55:09:
Waarom geen $setup trouwens ??
Met name stuk veiligheid vind ik erg moeilijk.
Toevoeging op 02/11/2010 17:55:09:
Waarom geen $setup trouwens ??
Omdat $setup niks zegt.
Wat moet dat zijn dan.
Ok ik begrijp dat ik beter een toepasselijke naam kan gebruiken.
Makkelijker uit te lezen bij evt problemen
Gewijzigd op 02/11/2010 20:12:25 door Peter van den Dungen