beste manier query in mysqli
Ik was even bezig met leren query's te gaan maken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sql_query =
"INSERT INTO members (id,username,password,email,pemail,birthyear)
VALUES (
'',
'".mysqli_real_escape_string($_POST['username'])."',
'".mysqli_real_escape_string($_POST['password'])."',
'".mysqli_real_escape_string($_POST['email'])."',
'".mysqli_real_escape_string($_POST['pemail'])."',
'".mysqli_real_escape_string($_POST['birthyear'])."',
)
";
?>
$sql_query =
"INSERT INTO members (id,username,password,email,pemail,birthyear)
VALUES (
'',
'".mysqli_real_escape_string($_POST['username'])."',
'".mysqli_real_escape_string($_POST['password'])."',
'".mysqli_real_escape_string($_POST['email'])."',
'".mysqli_real_escape_string($_POST['pemail'])."',
'".mysqli_real_escape_string($_POST['birthyear'])."',
)
";
?>
Doe ik dat zo goed in msqli of niet ? ,
Gewijzigd op 12/04/2012 10:22:33 door Dave schaafsma
prepared statements. Voorbeeldje:
Het is niet de veiligste en handigste methode. Beter kun je gebruik maken van 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
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
<?php
$iQuery = "
INSERT INTO
members
(
username,
password,
email,
pemail,
birthyear
)
VALUES
(
?,
?,
?,
?,
?
)
";
$stmt = $mysqli->prepare($iQuery);
$stmt->bind_param('ssssi', $_POST['username'], $_POST['password'], $_POST['email'], $_POST['pemail'], (int) $_POST['birthyear']);
if (!$stmt->execute()) {
echo 'Some error while executing the query: '.$stmt->error;
}
$stmt->close();
?>
$iQuery = "
INSERT INTO
members
(
username,
password,
email,
pemail,
birthyear
)
VALUES
(
?,
?,
?,
?,
?
)
";
$stmt = $mysqli->prepare($iQuery);
$stmt->bind_param('ssssi', $_POST['username'], $_POST['password'], $_POST['email'], $_POST['pemail'], (int) $_POST['birthyear']);
if (!$stmt->execute()) {
echo 'Some error while executing the query: '.$stmt->error;
}
$stmt->close();
?>
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
<?php
//## Connection
error_reporting (E_ALL && E_STRICT);
$mysqli = new mysqli('host', 'gebruikersnaam', 'wachtwoord', 'database');
if (mysqli_connect_errno())
{
printf("No connection avaible");
}
//## Register
if (isset ($_POST['submit'])) {
//#functies
}
$iQuery = "
INSERT INTO
members
(
username,
password,
email,
pemail,
birthyear
)
VALUES
(
'',
'".mysqli_real_escape_string($_POST['username'])."',
'".mysqli_real_escape_string($_POST['password'])."',
'".mysqli_real_escape_string($_POST['email'])."',
'".mysqli_real_escape_string($_POST['pemail'])."',
'".mysqli_real_escape_string($_POST['birthyear']).",
)
";
$stmt = $mysqli->prepare($iQuery);
$stmt->bind_param('ssssi', $_POST['username'], $_POST['password'], $_POST['email'], $_POST['pmail'], (int) $_POST['birthyear']);
if(!$stmt->execute()) {
echo 'some error while executing the query: ' .$stmt->error;
}
$stmt->close();
?>
//## Connection
error_reporting (E_ALL && E_STRICT);
$mysqli = new mysqli('host', 'gebruikersnaam', 'wachtwoord', 'database');
if (mysqli_connect_errno())
{
printf("No connection avaible");
}
//## Register
if (isset ($_POST['submit'])) {
//#functies
}
$iQuery = "
INSERT INTO
members
(
username,
password,
email,
pemail,
birthyear
)
VALUES
(
'',
'".mysqli_real_escape_string($_POST['username'])."',
'".mysqli_real_escape_string($_POST['password'])."',
'".mysqli_real_escape_string($_POST['email'])."',
'".mysqli_real_escape_string($_POST['pemail'])."',
'".mysqli_real_escape_string($_POST['birthyear']).",
)
";
$stmt = $mysqli->prepare($iQuery);
$stmt->bind_param('ssssi', $_POST['username'], $_POST['password'], $_POST['email'], $_POST['pmail'], (int) $_POST['birthyear']);
if(!$stmt->execute()) {
echo 'some error while executing the query: ' .$stmt->error;
}
$stmt->close();
?>
Maar nu stop hij gewoon de wachtwoorden zoals de gebruiker intypt in de database.
Als dit zo zou zijn hoe en wat is de beste manier van de wachtwoorden te versleutelen met md5 of salt , ik heb eigenlijk geen idee wat nou het beste is om dat te doen.
Weet iemand ook een goeie tutorial over php functies om de inputs te controleren ? ,
Gewijzigd op 12/04/2012 11:53:02 door dave schaafsma
Uhm Dave, die vraagtekens in Wouter zijn script staan er met een reden. Als je parameters gebruikt moet je wel placemarkers hebben en dat zijn die vraagtekens. Zoals jij het nu doet gaat het dus niet werken. Bekijk Wouter zijn voorbeeld nog eens goed.
Volgens mij heb ik het nog niet helemaal door wat ik nou fout doe ,wat doen de place makers precies ?
De database driver zal dan het SQL statement voorbereiden, maar voert het nog niet uit. Eerst geef je database driver de waardes (via de functie bind_param) en dan geef je de opdrachte het uit te voeren (met execute).
Het nut hiervan is tweeledig. In de eerste plaats zal de database driver er zorg voor dragen dat de waardes veilig worden ingevuld. Er kan geen SQL injectie plaats vinden, want wat er ook in de waarde staat (zelfs als is het een heel SQL statement), het geheel zal in de kolom in je tabel geplaatst worden.
Ten tweede geeft dit je ook de mogelijkheid om meerdere records snel achter elkaar in te voeren. Je prepared het statement een maal en dan geef je meerdere keren de bind_param en execute opdracht, elke keer met andere waardes.
Ben nu echt even helemaal de kluts kwijt iemand die mij opweg kan helpen doormidden van een voorbeeld ? , wat moet er met die vraagtekens gebeuren ik snap dat nog niet helemaal ?
Gewijzigd op 12/04/2012 13:00:12 door dave schaafsma
Het voorbeeld van Wouter is compleet.... dus wat heb je nog meer nodig?
Heb nog nooit gezien dat je aleen vraagtekens moest doen.
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
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
<?php
//## Connection
error_reporting (E_ALL && E_STRICT);
$dc = new mysqli('host', 'gebruikersnaam', 'wachtwoord', 'database');
if (mysqli_connect_errno())
{
printf("No connection avaible");
}
//## Register
$iQuery = "
INSERT INTO
members
(
username,
password,
email,
pemail,
birthyear
)
VALUES
(
?,
?,
?,
?,
?,
?
)
";
$stmt = $mysqli->prepare($iQuery);
$stmt->bind_param('ssssi', $_POST['username'], $_POST['password'], $_POST['email'], $_POST['pmail'], (int) $_POST['birthyear']);
if(!$stmt->execute()) {
echo 'some error while executing the query: ' .$stmt->error;
}
$stmt->close();
?>
//## Connection
error_reporting (E_ALL && E_STRICT);
$dc = new mysqli('host', 'gebruikersnaam', 'wachtwoord', 'database');
if (mysqli_connect_errno())
{
printf("No connection avaible");
}
//## Register
$iQuery = "
INSERT INTO
members
(
username,
password,
email,
pemail,
birthyear
)
VALUES
(
?,
?,
?,
?,
?,
?
)
";
$stmt = $mysqli->prepare($iQuery);
$stmt->bind_param('ssssi', $_POST['username'], $_POST['password'], $_POST['email'], $_POST['pmail'], (int) $_POST['birthyear']);
if(!$stmt->execute()) {
echo 'some error while executing the query: ' .$stmt->error;
}
$stmt->close();
?>
BEgin wel al vooruitgang te maken.
Gewijzigd op 12/04/2012 13:43:38 door dave schaafsma