Mysql fout
Ik heb dit: (regel 64)
INSERT INTO wmf_sites (Titel, URL, email, ip) VALUES($_POST['titel'], $_POST['url'], $_POST['email'], $_SERVER['REMOTE_ADDR'])
En hij zegt dat hij fout is:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\xampp\htdocs\webmasterfanaat\php-files\linkpartners.php on line 64
Groetjes Peter
Code (php)
1
2
3
2
3
<?php
$sql = "INSERT INTO wmf_sites (Titel, URL, email, ip) VALUES ('" . $_POST['titel'] . "', '" . $_POST['url'] "', '" . $_POST['email'] . "', '" . $_SERVER['REMOTE_ADDR'] . "')";
?>
$sql = "INSERT INTO wmf_sites (Titel, URL, email, ip) VALUES ('" . $_POST['titel'] . "', '" . $_POST['url'] "', '" . $_POST['email'] . "', '" . $_SERVER['REMOTE_ADDR'] . "')";
?>
En $_POST-vars direct in een query stoppen is vragen om moeilijkheden. Eerst altijd checken.
Edit: Quootje teveel verwijderd.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$sql = "
INSERT INTO
wmf_sites
(Titel, URL, email, ip)
VALUES ('" . $_POST['titel'] . "',
'" . mysql_real_escape_string($_POST['url']) "',
'" . mysql_real_escape_string($_POST['email']) . "',
'" . mysql_real_escape_string($_SERVER['REMOTE_ADDR']) . "')
";
$check = mysql_query($sql);
if($check) {
echo "Het in de database schrijven is gelukt!";
} else {
echo "Het in de database schrijven is niet gelukt... :-(";
//eventueel hier nog een mysql_error()
}
?>
$sql = "
INSERT INTO
wmf_sites
(Titel, URL, email, ip)
VALUES ('" . $_POST['titel'] . "',
'" . mysql_real_escape_string($_POST['url']) "',
'" . mysql_real_escape_string($_POST['email']) . "',
'" . mysql_real_escape_string($_SERVER['REMOTE_ADDR']) . "')
";
$check = mysql_query($sql);
if($check) {
echo "Het in de database schrijven is gelukt!";
} else {
echo "Het in de database schrijven is niet gelukt... :-(";
//eventueel hier nog een mysql_error()
}
?>
Denk eraan dat dit niet garandeerd dat het "fatsoenlijke" data is.. er zijn nog steeds geen checks op uitgevoerd, behalve dat alle "gevaarlijke" tekens er nu uitgevist worden.
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
$sql = "
INSERT INTO
wmf_sites (
Titel,
URL,
email,
ip
)
VALUES (
'" . mysql_real_escape_string($_POST['titel']) . "',
'" . mysql_real_escape_string($_POST['url']) . "',
'" . mysql_real_escape_string($_POST['email']) . "',
'" . mysql_real_escape_string($_SERVER['REMOTE_ADDR']) . "')
";
?>
$sql = "
INSERT INTO
wmf_sites (
Titel,
URL,
email,
ip
)
VALUES (
'" . mysql_real_escape_string($_POST['titel']) . "',
'" . mysql_real_escape_string($_POST['url']) . "',
'" . mysql_real_escape_string($_POST['email']) . "',
'" . mysql_real_escape_string($_SERVER['REMOTE_ADDR']) . "')
";
?>
Schrijf de boel dan ook nog even netjes uit, doe wat aan beveiliging en overweeg om geen hoofdletter meer te gebruiken voor de kolomnamen. Dit is vragen om problemen, je bent dan afhankelijk van het besturingssysteem van de databaseserver of je problemen in je queries gaat krijgen. En jij gaat 'Titel' gegarandeerd als 'titel' in je queries opnemen, dat soort 'fouten' gebeurt iedereen. Daarom dus nooit hoofdletters voor kolomnamen gebruiken.
Dankjewel gelukt
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
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
<?PHP
// ff Database toegang toewijzigen
$user = "root";
$pass = "peter1";
$host = "localhost";
$dbdb = "wmf";
if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
{
echo "Kan geen verbinding maken met de database.";
exit();
}
unset($user);
unset($pass);
unset($host);
unset($dbdb);
if(!isset($_POST['Submit'])){
echo "<form name=\"form1\" method=\"post\">";
echo "<p>E-mail: ";
echo "<input type=\"text\" name=\"email\">";
echo "<br>";
echo "Site:";
echo "<input type=\"text\" value=\"http://\" name=\"url\">";
echo "<br> ";
echo "<input type=\"text\" name=\"titel\">";
echo "<br>";
echo "<input type=\"submit\" name=\"Submit\" value=\"Voeg toe\">";
echo "<br>";
echo "</p>";
echo "</form>";
}
// Query maken
$sql = "SELECT * FROM wmf_sites";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
// Als de submit knop is ingedrukt
if(isset($_POST['Submit'])){
// Ff nagaan of alles identiek is/of het ingevuld is
if($_POST['email'] == '')
{
echo "je moet wel een email adres invullen";
exit();
}
elseif($_POST['url'] == '')
{
echo "Je moet wel een url invullen";
exit();
}
elseif($_POST['url'] == $row['url'])
{
echo "Die site bestaat al in onze database";
exit();
}
elseif($_POST['titel'] == '')
{
echo "Je moet wel een titel invullen";
exit();
}
else
{
// Als alles in orde is een query maken
$sql = "
INSERT INTO
wmf_sites (
Titel,
URL,
email,
ip
)
VALUES (
'" . mysql_real_escape_string($_POST['titel']) . "',
'" . mysql_real_escape_string($_POST['url']) . "',
'" . mysql_real_escape_string($_POST['email']) . "',
'" . mysql_real_escape_string($_SERVER['REMOTE_ADDR']) . "')
";
$check = mysql_query($sql);
if($check) {
echo "Succesvol toegevoegd";
} else {
echo "Het is niet gelukt :-(";
//eventueel hier nog een mysql_error()
}
}}
?>
// ff Database toegang toewijzigen
$user = "root";
$pass = "peter1";
$host = "localhost";
$dbdb = "wmf";
if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
{
echo "Kan geen verbinding maken met de database.";
exit();
}
unset($user);
unset($pass);
unset($host);
unset($dbdb);
if(!isset($_POST['Submit'])){
echo "<form name=\"form1\" method=\"post\">";
echo "<p>E-mail: ";
echo "<input type=\"text\" name=\"email\">";
echo "<br>";
echo "Site:";
echo "<input type=\"text\" value=\"http://\" name=\"url\">";
echo "<br> ";
echo "<input type=\"text\" name=\"titel\">";
echo "<br>";
echo "<input type=\"submit\" name=\"Submit\" value=\"Voeg toe\">";
echo "<br>";
echo "</p>";
echo "</form>";
}
// Query maken
$sql = "SELECT * FROM wmf_sites";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
// Als de submit knop is ingedrukt
if(isset($_POST['Submit'])){
// Ff nagaan of alles identiek is/of het ingevuld is
if($_POST['email'] == '')
{
echo "je moet wel een email adres invullen";
exit();
}
elseif($_POST['url'] == '')
{
echo "Je moet wel een url invullen";
exit();
}
elseif($_POST['url'] == $row['url'])
{
echo "Die site bestaat al in onze database";
exit();
}
elseif($_POST['titel'] == '')
{
echo "Je moet wel een titel invullen";
exit();
}
else
{
// Als alles in orde is een query maken
$sql = "
INSERT INTO
wmf_sites (
Titel,
URL,
email,
ip
)
VALUES (
'" . mysql_real_escape_string($_POST['titel']) . "',
'" . mysql_real_escape_string($_POST['url']) . "',
'" . mysql_real_escape_string($_POST['email']) . "',
'" . mysql_real_escape_string($_SERVER['REMOTE_ADDR']) . "')
";
$check = mysql_query($sql);
if($check) {
echo "Succesvol toegevoegd";
} else {
echo "Het is niet gelukt :-(";
//eventueel hier nog een mysql_error()
}
}}
?>
Maar nu zet hij: Het is niet gelukt :-(
Hoe kan dat??
Dan is de query waarschijnlijk niet gelukt.
Edit het is al gelukt!
Gewijzigd op 01/01/1970 01:00:00 door Peter Wessels