query wordt niet uitgevoerd
Het was alweer een tijde geleden dat ik me met PHP had bezig gehouden maar nu wil ik weer eens iets proberen. probleem: het werkt niet. Met de volgende code wordt wel de databasenaam aangemaakt maar niet de table. Wie weet wat er hier mis gaat?
Groet en dank,
Frank
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?
$db="CREATE DATABASE enquête";
$tabel="CREATE TABLE enquête(";
$tabel.="id int(4) NOT NULL auto_increment,";
$tabel.="ip varchar(20)NOT NULL,";
$tabel.="datum datetime NOT NULL,";
$tabel.="vraag1 varchar(250) NOT NULL,";
$tabel.="vraag2 varchar(250) NOT NULL,";
$tabel.="vraag3 varchar(250) NOT NULL,";
$tabel.="vraag4 varchar(250) NOT NULL,";
$tabel.="vraag5 varchar(250) NOT NULL,";
$tabel.="vraag6 varchar(250) NOT NULL,";
$tabel.="vraag7 varchar(250) NOT NULL,";
$tabel.="vraag8 varchar(250) NOT NULL,";
$tabel.="vraag9 varchar(250) NOT NULL,";
$tabel.="vraag10 varchar(250) NOT NULL,";
$tabel.="vraag11 varchar(250) NOT NULL,";
$tabel.="vraag12 varchar(250) NOT NULL,";
$tabel.="vraag13 varchar(250) NOT NULL,";
$tabel.="vraag14 varchar(250) NOT NULL,";
$tabel.="vraag15 varchar(250) NOT NULL,";
$tabel.="vraag16 varchar(250) NOT NULL,";
$tabel.="vraag17 varchar(250) NOT NULL,";
$tabel.="vraag18 varchar(250) NOT NULL,";
$tabel.="vraag19 varchar(250) NOT NULL,";
$tabel.="vraag20 varchar(250) NOT NULL,";
$tabel.="vraag21 varchar(250) NOT NULL,";
$tabel.="vraag22 varchar(250) NOT NULL,";
$tabel.="vraag23 varchar(250) NOT NULL,";
$tabel.="vraag24 varchar(250) NOT NULL,";
$tabel.="vraag25 varchar(250) NOT NULL,";
$tabel.="vraag26 varchar(250) NOT NULL,";
$tabel.="vraag27 varchar(250) NOT NULL,";
$tabel.="vraag28 varchar(250) NOT NULL,";
$tabel.="vraag29 varchar(250) NOT NULL,";
$tabel.="vraag30 varchar(250) NOT NULL,";
$tabel.="vraag318 varchar(250) NOT NULL,";
$tabel.="vraag29 varchar(250) NOT NULL,";
$tabel.="vraag30 varchar(250) NOT NULL,";
$tabel.="PRIMARY KEY(id))";
$connection=mysql_connect("localhost","root","");
mysql_query($db,$connection);
mysql_query($tabel,$connection);
mysql_select_db("enquête", $connection);
?>
$db="CREATE DATABASE enquête";
$tabel="CREATE TABLE enquête(";
$tabel.="id int(4) NOT NULL auto_increment,";
$tabel.="ip varchar(20)NOT NULL,";
$tabel.="datum datetime NOT NULL,";
$tabel.="vraag1 varchar(250) NOT NULL,";
$tabel.="vraag2 varchar(250) NOT NULL,";
$tabel.="vraag3 varchar(250) NOT NULL,";
$tabel.="vraag4 varchar(250) NOT NULL,";
$tabel.="vraag5 varchar(250) NOT NULL,";
$tabel.="vraag6 varchar(250) NOT NULL,";
$tabel.="vraag7 varchar(250) NOT NULL,";
$tabel.="vraag8 varchar(250) NOT NULL,";
$tabel.="vraag9 varchar(250) NOT NULL,";
$tabel.="vraag10 varchar(250) NOT NULL,";
$tabel.="vraag11 varchar(250) NOT NULL,";
$tabel.="vraag12 varchar(250) NOT NULL,";
$tabel.="vraag13 varchar(250) NOT NULL,";
$tabel.="vraag14 varchar(250) NOT NULL,";
$tabel.="vraag15 varchar(250) NOT NULL,";
$tabel.="vraag16 varchar(250) NOT NULL,";
$tabel.="vraag17 varchar(250) NOT NULL,";
$tabel.="vraag18 varchar(250) NOT NULL,";
$tabel.="vraag19 varchar(250) NOT NULL,";
$tabel.="vraag20 varchar(250) NOT NULL,";
$tabel.="vraag21 varchar(250) NOT NULL,";
$tabel.="vraag22 varchar(250) NOT NULL,";
$tabel.="vraag23 varchar(250) NOT NULL,";
$tabel.="vraag24 varchar(250) NOT NULL,";
$tabel.="vraag25 varchar(250) NOT NULL,";
$tabel.="vraag26 varchar(250) NOT NULL,";
$tabel.="vraag27 varchar(250) NOT NULL,";
$tabel.="vraag28 varchar(250) NOT NULL,";
$tabel.="vraag29 varchar(250) NOT NULL,";
$tabel.="vraag30 varchar(250) NOT NULL,";
$tabel.="vraag318 varchar(250) NOT NULL,";
$tabel.="vraag29 varchar(250) NOT NULL,";
$tabel.="vraag30 varchar(250) NOT NULL,";
$tabel.="PRIMARY KEY(id))";
$connection=mysql_connect("localhost","root","");
mysql_query($db,$connection);
mysql_query($tabel,$connection);
mysql_select_db("enquête", $connection);
?>
</body>
</html>
En probeer een enquete zonder ^
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?
$db="CREATE DATABASE enquete";
$tabel="CREATE TABLE enquete(";
$tabel.="id int(4) NOT NULL auto_increment,";
$tabel.="ip varchar(20)NOT NULL,";
$tabel.="datum datetime NOT NULL,";
$tabel.="vraag1 varchar(250) NOT NULL,";
$tabel.="vraag2 varchar(250) NOT NULL,";
$tabel.="vraag3 varchar(250) NOT NULL,";
$tabel.="vraag4 varchar(250) NOT NULL,";
$tabel.="vraag5 varchar(250) NOT NULL,";
$tabel.="vraag6 varchar(250) NOT NULL,";
$tabel.="vraag7 varchar(250) NOT NULL,";
$tabel.="vraag8 varchar(250) NOT NULL,";
$tabel.="vraag9 varchar(250) NOT NULL,";
$tabel.="vraag10 varchar(250) NOT NULL,";
$tabel.="vraag11 varchar(250) NOT NULL,";
$tabel.="vraag12 varchar(250) NOT NULL,";
$tabel.="vraag13 varchar(250) NOT NULL,";
$tabel.="vraag14 varchar(250) NOT NULL,";
$tabel.="vraag15 varchar(250) NOT NULL,";
$tabel.="vraag16 varchar(250) NOT NULL,";
$tabel.="vraag17 varchar(250) NOT NULL,";
$tabel.="vraag18 varchar(250) NOT NULL,";
$tabel.="vraag19 varchar(250) NOT NULL,";
$tabel.="vraag20 varchar(250) NOT NULL,";
$tabel.="vraag21 varchar(250) NOT NULL,";
$tabel.="vraag22 varchar(250) NOT NULL,";
$tabel.="vraag23 varchar(250) NOT NULL,";
$tabel.="vraag24 varchar(250) NOT NULL,";
$tabel.="vraag25 varchar(250) NOT NULL,";
$tabel.="vraag26 varchar(250) NOT NULL,";
$tabel.="vraag27 varchar(250) NOT NULL,";
$tabel.="vraag28 varchar(250) NOT NULL,";
$tabel.="vraag29 varchar(250) NOT NULL,";
$tabel.="vraag30 varchar(250) NOT NULL,";
$tabel.="vraag31 varchar(250) NOT NULL,";
$tabel.="PRIMARY KEY(id))";
$connection=mysql_connect("localhost","root","");
mysql_query($db,$connection);
mysql_query($tabel,$connection);
mysql_select_db("enquete", $connection);
echo mysql_error();
?>
$db="CREATE DATABASE enquete";
$tabel="CREATE TABLE enquete(";
$tabel.="id int(4) NOT NULL auto_increment,";
$tabel.="ip varchar(20)NOT NULL,";
$tabel.="datum datetime NOT NULL,";
$tabel.="vraag1 varchar(250) NOT NULL,";
$tabel.="vraag2 varchar(250) NOT NULL,";
$tabel.="vraag3 varchar(250) NOT NULL,";
$tabel.="vraag4 varchar(250) NOT NULL,";
$tabel.="vraag5 varchar(250) NOT NULL,";
$tabel.="vraag6 varchar(250) NOT NULL,";
$tabel.="vraag7 varchar(250) NOT NULL,";
$tabel.="vraag8 varchar(250) NOT NULL,";
$tabel.="vraag9 varchar(250) NOT NULL,";
$tabel.="vraag10 varchar(250) NOT NULL,";
$tabel.="vraag11 varchar(250) NOT NULL,";
$tabel.="vraag12 varchar(250) NOT NULL,";
$tabel.="vraag13 varchar(250) NOT NULL,";
$tabel.="vraag14 varchar(250) NOT NULL,";
$tabel.="vraag15 varchar(250) NOT NULL,";
$tabel.="vraag16 varchar(250) NOT NULL,";
$tabel.="vraag17 varchar(250) NOT NULL,";
$tabel.="vraag18 varchar(250) NOT NULL,";
$tabel.="vraag19 varchar(250) NOT NULL,";
$tabel.="vraag20 varchar(250) NOT NULL,";
$tabel.="vraag21 varchar(250) NOT NULL,";
$tabel.="vraag22 varchar(250) NOT NULL,";
$tabel.="vraag23 varchar(250) NOT NULL,";
$tabel.="vraag24 varchar(250) NOT NULL,";
$tabel.="vraag25 varchar(250) NOT NULL,";
$tabel.="vraag26 varchar(250) NOT NULL,";
$tabel.="vraag27 varchar(250) NOT NULL,";
$tabel.="vraag28 varchar(250) NOT NULL,";
$tabel.="vraag29 varchar(250) NOT NULL,";
$tabel.="vraag30 varchar(250) NOT NULL,";
$tabel.="vraag31 varchar(250) NOT NULL,";
$tabel.="PRIMARY KEY(id))";
$connection=mysql_connect("localhost","root","");
mysql_query($db,$connection);
mysql_query($tabel,$connection);
mysql_select_db("enquete", $connection);
echo mysql_error();
?>
</body>
</html>
Krijg je een error?
Met vriendelijke groet,
Frank
Je moet de error eerder echoën. Direct na mysql_query($tabel,$connection);
Groet,
Frank
Groet,
Frank
en probeer hem dan te importeren...
kijk is of dat lukt..
Groetjes
Speciale karakters als ê zijn zowiezo af te raden om te gebruiken als tabelnaam of kolomnaam.
Het valt me trouwens op dat je probeert in te loggen als root. Om veel sql-servers is het niet toegestaan om als root in te loggen en queries uit te voeren vanuit o.a. PHP scripts (JE mag met de root alleen inloggen via de normale linux shell. Mogelijk kan daar het probleem ook in zitten?
Bedankt voor jullie commentaren.
Vriendelijke groet,
Frank
Quote:
Heb ook nog even gekeken naar dat artikeltje over normaliseren. Dit lijkt me erg nuttig maar vooral bij grote databasestructuren. Repeterende groepen komen in dit voorbeeld niet voor
En dan de database:
Quote:
raag1 varchar(250) NOT NULL,
vraag2 varchar(250) NOT NULL,
vraag3 varchar(250) NOT NULL,
etc.
vraag2 varchar(250) NOT NULL,
vraag3 varchar(250) NOT NULL,
etc.
Hoe wil jij dat noemen? Zodra er genummerde kolomnamen zijn, dan kun je er vergif op innemen dat je een probleem aan het creeeren bent. Nu mag je dat natuurlijk helemaal zelf weten, maar of het slim is?
De omvang en complexiteit van een database zegt helemaal niets over het al dan niet gaan normaliseren. Heb je al uitgezocht wat de bedoeling is van normaliseren? Voorkomen van datacorruptie, flexibiliteit, etc. etc.
Ben nog niet zo lang bezig met PHP maar dat heb je al gemerkt denk ik.
Met vriendelijke groet,
Frank
Mijn tabel is een Flat File
Er is dus geen sprake van een relationele database
Omdat waarden dubbel worden opgeslagen, moet ik de tabel opsplitsen
1 antwoord kan op meerder vragen betrekking hebben
Er is dus sprake van een 1 op veel relatie antw->vraag
Het ligt dus voor de hand een aparte tabel antwoorden te maken
Bij een respondent horen geen vragen maar kenmerken
In mijn tabel bijv. : geslacht, leeftiijd, inkomen, vooropleiding
Ook hier kan ik een aparte tabel voor maken.
Tabel Respondenten
ip
datum
inkomen
vooropleiding
Tabel Vragen
vraag1
.
.
vraag31
Tabel antwoorden
man
vrouw
wel
niet
35-45
45-55
55-65
WW
Gezinsinkomen
Probleem blijft hoe ik een en ander praktisch moet gaan uitvoeren want de queries worden waarschijnlijk wel wat ingewikkelder.
Overigens, waarom kan het nummeren van veldnamen (attribuutnamen) zoals vraag1, problemen opleveren?
tips mbt een helder boek dan wel tutorial zijn welkom.
met vriendelijke groet en een prettige zondag,
Frank
Je doet nu voorkomen alsof je de kolomnamen vraag 1 tm 31 hebt genoemd, maar zo moet dat natuurlijk niet. Datzelfde geldt voor de tabel antwoorden waarin je voor doet komen alsof de kolomnamen tevens de antwoorden zijn.
Als we nu eens vanaf het begin beginnen, heb je allereerst dus een tabel met respondenten die we dan ook 'respondenten' noemen (tip: gebruik zo min mogelijk hoofdletters in je database). Daarin moet elke persoon een uniek id krijgen en vervolgens kun je de gegevens van de respondent opslaan:
respondenten
----------------
id
ip_adres
datum
inkomen
vooropleiding
Dit kan nog verder genormaliseerd worden. Bijvoorbeeld de kolom vooropleiding, gaat nu waarschijnlijk dubbele data bevatten aangezien er meerdere respondenten kunnen zijn met dezelfde vooropleiden (een meer-op-1 relatie dus). Ok, dus ook nog een aparte tabel voor de vooropleidingen:
respondenten
----------------
id
ip_adres
datum
inkomen
vooropleiding_id
vooropleidingen
------------------
id
opleiding
Nu kunnen we verder kijken naar de tabellen met vragen en antwoorden. Laten we dus eens beginnen met een vragen tabel:
vragen
---------
id
vraag
Deze tabel bevat dus alle mogelijke vragen. In deze tabel kun je natuurlijk niet de antwoorden opslaan die gegeven worden, aangezien meerdere gebruikers antwoord geven op dezelfde vraag. Dus heb je nog een aparte antwoorden tabel nodig.
Bedenk dan dat een antwoord bij een vraag hoort en gegeven wordt door een respondent:
antwoorden
--------------
id
vraag_id
respondent_id
antwoord
Nu is deze tabel alleen te gebruiken als alle antwoorden verschillend (kunnen) zijn en dus niet vooraf bepaald worden.
Het is toch nog een heel verhaal geworden, maar hoop dat je hiermee een stukje vooruit kunt...