Mysql-query

Status
Niet open voor verdere reacties.

Kligham

Gebruiker
Lid geworden
7 jan 2009
Berichten
389
Hallo,

Ik probeer met de volgende query een database en aantal tables te maken maar hij heeft heel de tijd de volgende foutmelding:

(1 row(s)affected)
(0 ms taken)

Error Code : 1046
No database selected
(0 ms taken)

Hier is de query:

CREATE DATABASE test;

CREATE TABLE patient(
patientid INT(6) UNSIGNED AUTO_INCREMENT,
naam VARCHAR(20) NOT NULL,
PRIMARY KEY (patientid)
) TYPE=InnoBD;

Weet iemand toevallig waar hier de fout ligt?

Ik heb ook nog een 2de vraagje: het is de bedoeling dat als er achter de voor- en achternaam gevraagd wordt, ook een aanspreking moet ingevuld worden. Dit zou later gewoon moeten gekozen worden uit een lijst. Het punt waarover het gaat is het volgende: Je kan voor 'Aanspreking' in je database kiezen voor ENUM en zo een stuk of 5-10 aansprekingen in een lijst aanbieden in je programma waaruit ze kunnen kiezen. Volgens mij kan dit ook in een VARCHAR. Bij een aanspreking is dit nu niet echt een probleem alle mogelijke opties bij ENUM in te typen, maar stel dat dit nu het geval is als je een lijst maakt van alle mogelijke gemeenten in belgie met een bijbehorende postnummer. Dat neemt dit toch al een beetje meer tijd in beslag (natuurlijk wel geautomatiseerd). Is het zinvol dat ik daar dan mijn tijd in zal gaan steken, of laat ik het dan beter gewoon met Varchar.

-> Neemt Varchar bijvoorbeeld op die manier meer ruimte in in mijn database, waardoor het op den duur trager gaat gaan lopen?

Tis nogal lang voor wat het is, maar in ieder bedankt voor de hulp :p

Grtz
 
Laatst bewerkt:
Dank je wel voor je rappe reply :thumb:

Bij deze nog een vraagje, is er toevallig een snelle manier om je database vol te laten lopen met data, om snelheid van het zoek naar data en grootte van je database te kunnen bekijken. Dit zou handig zijn om te bekijken of het dan inderdaad nuttig is om ENUM te gebruiken.

-> Je site was allessinds al heel nuttig :cool:
 
als je gebruik maakt van bijvoorbeeld PHP (of natuurlijk een andere scripttaal)

zou je in een loop veel random data kunnen toevoegen.
 
Hallo,

Aangezien ik nog maar net begonnen ben met php ziet dit script er nogal ***lig uit maar kom. Hoe dan ook normaal gezien zou ie volgens mij 10000 keer peter moeten toevoegen, maar hij doet dit maar een aantal keer en dan geeft hij dit na een aantal seconden als output. Ik snap echt niet waarom?
PHP:
<?php
$loop = 1;
While($loop<=10000)
{  

$con = mysql_connect("localhost","root","xxxxxxxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("test", $con);
	mysql_query("INSERT INTO patient (naam) 
	VALUES ('Peter')");
		
	mysql_close($con);
	
	$loop++;
	
}
?>
Output:

Could not connect: Can't connect to MySQL server on 'localhost' (10048)

Gevolg:

Ik moet mijn mysql server herstarten voordat ik er weer toegang tot krijg.

Groetjes
 
Laatst bewerkt door een moderator:
Je hebt het openen van een verbinding naar de database binnen je while loop gezet. Dat betekend dat hij bij het toevoegen van elke nieuwe rij, een nieuwe verbinding naar je database opent.

Na een stuk of 1000 (afhankelijk van de instellingen, kan ook veel minder zijn) verbindingen tegelijk open houdt de database het voor gezien en dan krijg je dus errors.

Zet die mysq_connect eens boven de while loop, dan gaat het waarschijnlijk beter.

Overigens is een tabel met allemaal dezelfde data niet zo heel geschikt om te zoeken, want óf alle cellen voldoen, óf alle cellen voldoen niet. Je kunt beter een stuk of 10 verschillende namen nemen.
 
Zoals frats inderdaad beschrijft moet het connecten met de database en het selecteren van de database boven de loop, dat is sneller enz. toch staat er een close en dan zou je geen gelijktijdige verbindingen open moeten houden...
Het verbinden met de database zet ik dan ook altijd in een andere bestand die ik vervolgens include...

Ook al ben je beginner zal ik je meteen vertellen dat je in dit geval beter een for-loop kunt gebruiken, aangezien je weet hoeveel keer er iets doorlopen moet worden, nu heb je op 3 plaatsen initialisatie, conditie en ophoging staan. bij een for-loop staan ze bij elkaar.

ik heb ook nog even de waarde van de loop achter de naam gezet.

je krijgt dan:
PHP:
<?php
$con = mysql_connect("localhost","root","xxxxxxxxxx");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);

for( $loop = 1; $loop<=10000; $loop++ ) { 

mysql_query("INSERT INTO patient (naam) 
VALUES ('Peter$loop')");
}
mysql_close($con);
?>
 
Laatst bewerkt door een moderator:
Okido, nu werkt hij zoals het moet. Stel dat ik nu mijn column land instel als ENUM, en wil hem testen door in php te zeggen van: oke hier heb je al de mogelijkheden waartussen je kan kiezen, en je moet automatisch (en in principe zou dat op willekeurige basis moeten gebeuren, statistisch gezien dan toch:o) kiezen uit de waslijst.

-> is toevallig iemand die me in de juiste richting kan helpen? Of weet je waar ik iets hierover kan vinden (wat in te typen in google, want kweet niet hoe je dit probleem in godsnaam moet gaan vinden).

GRTZ
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan