PHP/MySQL Probleem
Ik heb een probleem met mijn nieuwe install script. De informatie wordt namenlijk niet in de database opgeslagen. Script:
Quote:
<html>
<head>
<title>Installatie</title>
</head>
<body bgcolor="0099ff">
<center>
<br>
<a style="font-size: 14pt">Installatie voltooid!</a><br>
<a>vergeet niet installatie.php en installatie2.php te verwijderen!</a><br>
<a href="index.php"><font color="black">Ga naar de homepage</font></a>
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
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
<?php
error_reporting(-1);
$database = $_POST["mysqldatabase"];
$host = $_POST["mysqlhost"];
$wachtwoord = $_POST["mysqlwachtwoord"];
$naam=$_POST["mysqlnaam"];
$sitenaam = $_POST["sitenaam"];
$beschrijving = $_POST["beschrijving"];
$email = $_POST["email"];
$pagina1 = $_POST["pagina1"];
$tekst1 = $_POST["tekstpagina1"];
$pagina2 = $_POST["pagina1"];
$tekst2 = $_POST["tekstpagina2"];
$pagina3 = $_POST["pagina1"];
$tekst3 = $_POST["tekstpagina3"];
$pagina4 = $_POST["pagina1"];
$tekst4 = $_POST["tekstpagina4"];
$verbinding = mysql_connect("$host","$naam","$wachtwoord");
mysql_select_db( "$database" );
$tijd = "NOW()";
$query = "INSERT INTO instellingen (sitenaam, beschrijving, mysqlnaam, mysqlwachtwoord, mysqlhost, database, email, pagina1, pagina1b, pagina2, pagina2b, pagina3, pagina3b, pagina4, pagina4b, adminnaam, adminwachtwoord, installatie)
VALUES ('$sitenaam','$beschrijving','$naam','$wachtwoord','$host','$database','$email','$pagina1','$tekst1','$pagina2','$tekst2','$pagina3','$tekst3','$pagina4','$tekst4','$adminaam','$adminwachtwoord','$tijd')";
$result = mysql_query($query);
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
?>
error_reporting(-1);
$database = $_POST["mysqldatabase"];
$host = $_POST["mysqlhost"];
$wachtwoord = $_POST["mysqlwachtwoord"];
$naam=$_POST["mysqlnaam"];
$sitenaam = $_POST["sitenaam"];
$beschrijving = $_POST["beschrijving"];
$email = $_POST["email"];
$pagina1 = $_POST["pagina1"];
$tekst1 = $_POST["tekstpagina1"];
$pagina2 = $_POST["pagina1"];
$tekst2 = $_POST["tekstpagina2"];
$pagina3 = $_POST["pagina1"];
$tekst3 = $_POST["tekstpagina3"];
$pagina4 = $_POST["pagina1"];
$tekst4 = $_POST["tekstpagina4"];
$verbinding = mysql_connect("$host","$naam","$wachtwoord");
mysql_select_db( "$database" );
$tijd = "NOW()";
$query = "INSERT INTO instellingen (sitenaam, beschrijving, mysqlnaam, mysqlwachtwoord, mysqlhost, database, email, pagina1, pagina1b, pagina2, pagina2b, pagina3, pagina3b, pagina4, pagina4b, adminnaam, adminwachtwoord, installatie)
VALUES ('$sitenaam','$beschrijving','$naam','$wachtwoord','$host','$database','$email','$pagina1','$tekst1','$pagina2','$tekst2','$pagina3','$tekst3','$pagina4','$tekst4','$adminaam','$adminwachtwoord','$tijd')";
$result = mysql_query($query);
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
?>
<html>
<head>
<title>Installatie</title>
</head>
<body bgcolor="0099ff">
<center>
<br>
<a style="font-size: 14pt">Installatie voltooid!</a><br>
<a>vergeet niet installatie.php en installatie2.php te verwijderen!</a><br>
<a href="index.php"><font color="black">Ga naar de homepage</font></a>
Error:
Quote:
Invalid query: 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 'database, email, pagina1, pagina1b, pagina2, pagina2b, pagina3, pagina3b, pagina' at line 1 Whole query: INSERT INTO instellingen (sitenaam, beschrijving, mysqlnaam, mysqlwachtwoord, mysqlhost, database, email, pagina1, pagina1b, pagina2, pagina2b, pagina3, pagina3b, pagina4, pagina4b, adminnaam, adminwachtwoord, installatie) VALUES ('xcbvxcb','xcbxczxcdb','root','poepzak1','localhost','cms','jsnfsdjgnf','dsjfnsdjfn','kinjgsdjaflkhn','dsjfnsdjfn','jkhnswadegfjk','dsjfnsdjfn','fjihesfjuaiHN','dsjfnsdjfn','jdshfjusdf','','','NOW()')
-onnodig kopieeren van variabelen
variabelen buiten quots in mysql zoals:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$query = "INSERT INTO instellingen
(
sitenaam,
beschrijving
)
VALUES
(
'".mysql_real_escape_string($_POST['sitenaam'])."',
'".mysql_real_escape_string($_POST['beschrijving']."'
)";
?>
$query = "INSERT INTO instellingen
(
sitenaam,
beschrijving
)
VALUES
(
'".mysql_real_escape_string($_POST['sitenaam'])."',
'".mysql_real_escape_string($_POST['beschrijving']."'
)";
?>
Gewijzigd op 19/01/2011 18:30:27 door gerhard l
$vars altijd buiten quotes houden.
NOW() is geen PHP.
Die() is geen nette foutafhandeling.
Script is lek => sql-injection.
De error komt door 'database'. Dat is een gereserveerd word van sql en mag niet gebruikt worden als naam van een veld of tabel.
dus wat moet ik eraan doen?
lijkt me toch duidelijk... gereserveerde woorden eruit halen, $vars niet kopieren mysqlrealescapestring gebruiken now() is geen php term, dus daar moet je wat anders voor verzinnen en maak een foutafhandeling, die() end je script maar zie je niet waar het fout gaat...