query blijft maar fout gaan ...
Ik word echt een keer gek. Ik voor een installatie script een query nodig voor de database. Maar hij blijft maar fout gaan en kan de fout echt niet vinden. Dit geeft hij als foutmelding:
Quote:
Notice: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '; CREATE TABLE portfolio_gemaakt (
In query: CREATE TABLE portfolio ( id int(11) NOT NULL auto_increment, voorbeeld varchar(255) NOT NULL, naam varchar(255) NOT NULL, opdracht text NOT NULL, resultaat varchar(255) NOT NULL, lyte varchar(255) NOT NULL, lytewidth int(11) NOT NULL, lyteheight int(11) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE portfolio_gemaakt ( id int(11) NOT NULL auto_increment, portfolio_id int(11) NOT NULL, techniek_id int(11) NOT NULL, PRIMARY KEY (id) in /home/jordi/domains/jordi.frih.net/public_html/test/install.php on line 197
In query: CREATE TABLE portfolio ( id int(11) NOT NULL auto_increment, voorbeeld varchar(255) NOT NULL, naam varchar(255) NOT NULL, opdracht text NOT NULL, resultaat varchar(255) NOT NULL, lyte varchar(255) NOT NULL, lytewidth int(11) NOT NULL, lyteheight int(11) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE portfolio_gemaakt ( id int(11) NOT NULL auto_increment, portfolio_id int(11) NOT NULL, techniek_id int(11) NOT NULL, PRIMARY KEY (id) in /home/jordi/domains/jordi.frih.net/public_html/test/install.php on line 197
En hier is het stukje code:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
if(!$db = mysql_connect($_POST['database_host'], $_POST['database_gebruikersnaam'], $_POST['database_wachtwoord']))
{
$_SESSION['errors']['database_host'] = true;
$_SESSION['errors']['database_gebruikersnaam'] = true;
$_SESSION['errors']['database_wachtwoord'] = true;
$errors[] = 'Kon geen verbinding krijgen met database';
}
else
{
if(!mysql_select_db($_POST['database_dbnaam'], $db))
{
$_SESSION['errors']['database_dbnaam'] = true;
$errors[] = 'Kon de database niet selecteren';
}
else
{
$query = "
CREATE TABLE portfolio (
id int(11) NOT NULL auto_increment,
voorbeeld varchar(255) NOT NULL,
naam varchar(255) NOT NULL,
opdracht text NOT NULL,
resultaat varchar(255) NOT NULL,
lyte varchar(255) NOT NULL,
lytewidth int(11) NOT NULL,
lyteheight int(11) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE portfolio_gemaakt (
id int(11) NOT NULL auto_increment,
portfolio_id int(11) NOT NULL,
techniek_id int(11) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE ratings (
id int(11) NOT NULL auto_increment,
portfolio_id varchar(80) NOT NULL,
rating_num int(11) NOT NULL,
IP varchar(25) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE techniek (
id int(11) NOT NULL auto_increment,
omschrijving varchar(255) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO techniek VALUES (1, 'PSD');
INSERT INTO techniek VALUES (2, 'HTML');
INSERT INTO techniek VALUES (3, 'CSS');
INSERT INTO techniek VALUES (4, 'JS');
INSERT INTO techniek VALUES (5, 'FLASH');
INSERT INTO techniek VALUES (6, 'PHP');
CREATE TABLE admin (
admin_naam VARCHAR(255) NOT NULL ,
admin_wachtwoord VARCHAR(255) NOT NULL ,
url VARCHAR(255) NOT NULL ,
layout_soort VARCHAR(8) NOT NULL ,
layout_vorm VARCHAR(11) NOT NULL ,
plaatjes INT(11) NOT NULL ,
lytebox_kleur VARCHAR(6) NOT NULL ,
lytebox_flash VARCHAR(6) NOT NULL ,
lytebox_border VARCHAR(6) NOT NULL ,
lytebox_snelheid INT(2) NOT NULL
);
INSERT
INTO
admin
VALUES
(
'".$_POST['admin_naam']."',
'".$_POST['admin_wachtwoord']."',
'".$_POST['portfolio_url']."',
'".$_POST['portfolio_soort']."',
'".$_POST['portfolio_vorm']."',
".$_POST['portfolio_plaatjes'].",
'".$_POST['lytebox_kleur']."',
'".$_POST['lytebox_flash']."',
'".$_POST['lytebox_border']."',
".$_POST['lytebox_snelheid']."
);
";
if(!$res = mysql_query($query))
{
trigger_error(mysql_error().'<br />In query: '.$query);
}
else
{
?>
if(!$db = mysql_connect($_POST['database_host'], $_POST['database_gebruikersnaam'], $_POST['database_wachtwoord']))
{
$_SESSION['errors']['database_host'] = true;
$_SESSION['errors']['database_gebruikersnaam'] = true;
$_SESSION['errors']['database_wachtwoord'] = true;
$errors[] = 'Kon geen verbinding krijgen met database';
}
else
{
if(!mysql_select_db($_POST['database_dbnaam'], $db))
{
$_SESSION['errors']['database_dbnaam'] = true;
$errors[] = 'Kon de database niet selecteren';
}
else
{
$query = "
CREATE TABLE portfolio (
id int(11) NOT NULL auto_increment,
voorbeeld varchar(255) NOT NULL,
naam varchar(255) NOT NULL,
opdracht text NOT NULL,
resultaat varchar(255) NOT NULL,
lyte varchar(255) NOT NULL,
lytewidth int(11) NOT NULL,
lyteheight int(11) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE portfolio_gemaakt (
id int(11) NOT NULL auto_increment,
portfolio_id int(11) NOT NULL,
techniek_id int(11) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE ratings (
id int(11) NOT NULL auto_increment,
portfolio_id varchar(80) NOT NULL,
rating_num int(11) NOT NULL,
IP varchar(25) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE techniek (
id int(11) NOT NULL auto_increment,
omschrijving varchar(255) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO techniek VALUES (1, 'PSD');
INSERT INTO techniek VALUES (2, 'HTML');
INSERT INTO techniek VALUES (3, 'CSS');
INSERT INTO techniek VALUES (4, 'JS');
INSERT INTO techniek VALUES (5, 'FLASH');
INSERT INTO techniek VALUES (6, 'PHP');
CREATE TABLE admin (
admin_naam VARCHAR(255) NOT NULL ,
admin_wachtwoord VARCHAR(255) NOT NULL ,
url VARCHAR(255) NOT NULL ,
layout_soort VARCHAR(8) NOT NULL ,
layout_vorm VARCHAR(11) NOT NULL ,
plaatjes INT(11) NOT NULL ,
lytebox_kleur VARCHAR(6) NOT NULL ,
lytebox_flash VARCHAR(6) NOT NULL ,
lytebox_border VARCHAR(6) NOT NULL ,
lytebox_snelheid INT(2) NOT NULL
);
INSERT
INTO
admin
VALUES
(
'".$_POST['admin_naam']."',
'".$_POST['admin_wachtwoord']."',
'".$_POST['portfolio_url']."',
'".$_POST['portfolio_soort']."',
'".$_POST['portfolio_vorm']."',
".$_POST['portfolio_plaatjes'].",
'".$_POST['lytebox_kleur']."',
'".$_POST['lytebox_flash']."',
'".$_POST['lytebox_border']."',
".$_POST['lytebox_snelheid']."
);
";
if(!$res = mysql_query($query))
{
trigger_error(mysql_error().'<br />In query: '.$query);
}
else
{
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
2) Je gebruikt geen enkele vorm van beveiliging, nog meer problemen zijn je deel
3) mysql_query() kan maar 1 query uitvoeren, jij probeert er 12 uit te voeren. Vandaar dat de boel stuk loopt na de eerste query, dus ná de ;
Offtopic: diverse tabellen met onderlinge relaties, maar de relaties (de foreign keys) ontbreken. Er zijn dus geen relaties, er is geen sprake van een relationele database.
Het is dus slimmer om gewoon de gebruiker de tabellen toe te voegen. :)
Dan kun je zowel handmatig de bestanden uitvoeren of door een script.
Uiteraard moet dat script na het uitvoeren wel onklaar worden gemaakt.
edit:
MySQLi kan volgens mij meerdere queries uitvoeren.
http://nl.php.net/manual/en/function.mysqli-multi-query.php
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
Jordi schreef op 31.03.2008 20:58:
Dat zeg ik niet. Ik zeg wel dat je in 99 van de 100x tegen problemen gaat aanlopen, zie jouw huidige problemen en het onbreken van iedere vorm van beveiliging.Het is dus slimmer om gewoon de gebruiker de tabellen toe te voegen. :)
Tevens probeer je dingen te doen helemaal niet kunnen, dat duidt op een gebrek aan kennis. Zorg dat je eerst voldoende afweet van PHP voordat je met dit soort installatie-scripts aan de slag gaat, er kan een hele hoop fout gaan.
Van fouten leer je gelukkig ook.
Quote:
Tevens probeer je dingen te doen helemaal niet kunnen
Het enige wat niet kon is zoveel dingen uitvoeren in in 1 keer. Maar ik heb toch maar besloten al het werk door de gebruiker zelf te laten doen :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$aSQL = array(
"CREATE TABLE blablabla",
"CREATE TABLE nog_meer_blablabla",
"INSERT INTO blablabla ...",
"INSERT INTO blablabla ...",
"INSERT INTO blablabla ...",
"CREATE TABLE bullshit"
);
foreach($aSQL as $query){
if(!mysql_query($query)){
echo mysql_error().$query; // blijkbaar iets mislukt
}
}
?>
$aSQL = array(
"CREATE TABLE blablabla",
"CREATE TABLE nog_meer_blablabla",
"INSERT INTO blablabla ...",
"INSERT INTO blablabla ...",
"INSERT INTO blablabla ...",
"CREATE TABLE bullshit"
);
foreach($aSQL as $query){
if(!mysql_query($query)){
echo mysql_error().$query; // blijkbaar iets mislukt
}
}
?>
Array's doen wonderen...