Insert uniek ID in MySQL met PHP
Ik ben net nieuw op dit forum, maar heb wel gezocht of iets als dit al bestond en kon het niet vinden.
Hopelijk kan iemand me hier mee helpen.
Ik zal de situatie even kort uitleggen:
Mensen moeten een formulier kunnen invullen en de gegevens moeten in een MySQL tabel worden opgeslagen.
Elke keer als iemand een formulier post, moet er dus een uniek "ID" worden toegekend aan de nieuwe rij.
Na het posten moet degene worden doorverwezen naar webadres.nl/formulier/[uniekID]
In principe komt het bijna op hetzelfde neer als wat dit forum doet. Je vult je topic in, en hij zet hem ergens in een database met een uniekID voor elk topic, die later te benaderen is via de url met het ID erin.
Op zich beheers ik PHP en MySQL best goed, maar ik weet echt niet hoe ik dit zou moeten aanpakken. Ik heb nog nooit iets gemaakt waarbij mensen de insert statement gebruiken, dus dat ze iets opslaan en heb ook gehoord dat er MySQL Injection kan zijn.
Ik hoop dat iemand hier een goede, veilige manier weet om dit te doen en me hierbij te helpen.
Gewijzigd op 25/03/2014 20:54:22 door Colin h
https://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
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
$STH = $DBH->("INSERT INTO messages (name, email, message) values (?, ?, ?);
$STH->bindParam(1, $name);
$STH->bindParam(2, $email);
$STH->bindParam(3, $message);
# insert one row
$name = "Daniel"
$email= "[email protected]";
$message = "Hello world...";
$STH->execute();
$STH->bindParam(1, $name);
$STH->bindParam(2, $email);
$STH->bindParam(3, $message);
# insert one row
$name = "Daniel"
$email= "[email protected]";
$message = "Hello world...";
$STH->execute();
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
Je kan een attribuut (veld) in een tabel definieren als autoincrement ID. Zie bovenstaande link met voorbeelden.
Over insert unique ID: Je kan een attribuut (veld) in een tabel definieren als autoincrement ID. Zie bovenstaande link met voorbeelden.
kijk eens naar de eigenschappen van een auto-increment field
Code (php)
1
2
3
4
5
2
3
4
5
<?php
// SQL invoeren
$id = mysql_insert_id();
echo '<meta http-equiv="refresh" content="3; url=webadres.nl/bestand.ext?id='.$id.'">';
?>
// SQL invoeren
$id = mysql_insert_id();
echo '<meta http-equiv="refresh" content="3; url=webadres.nl/bestand.ext?id='.$id.'">';
?>
Dus:
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
$mysqli = ''; // hier je db connectie
if($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['bericht'])){
$query = "INSERT INTO bepaalde_tabel (bericht) VALUES ('".mysqli_real_escape_string($mysqli,$_POST['bericht'])."')";
if(($invoeren = $mysqli->query($query))){
$id = mysqli_insert_id($mysqli);
header('Location: bestand.php?id='.$id);
exit;
}
}
?>
$mysqli = ''; // hier je db connectie
if($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['bericht'])){
$query = "INSERT INTO bepaalde_tabel (bericht) VALUES ('".mysqli_real_escape_string($mysqli,$_POST['bericht'])."')";
if(($invoeren = $mysqli->query($query))){
$id = mysqli_insert_id($mysqli);
header('Location: bestand.php?id='.$id);
exit;
}
}
?>
Door in MySQL in te stellen dat het ID met auto_increment automatisch oploopt, wordt elke keer na een insert automatisch oplopend een uniek ID toegekend. Met mysqli_insert_id(); vraag je deze (direct na de insert query) weer op. Uiteraard alleen wanneer de insert query goed is gegaan (controleer daar op!)
De header(); verwijst dan door naar een andere pagina.
De exit(); zorgt dat je script stopt na het doorverwijzen naar de andere pagina.
Gewijzigd op 26/03/2014 09:55:08 door Ramon van Dongen
wil je weten hoe het werkt met dat unieke id?
Wil je weten hoe je gegevens (veilig) toevoegt aan een database?
Wil je weten hoe je die url maakt?
Colin h op 25/03/2014 20:53:22:
Op zich beheers ik PHP en MySQL best goed.
Ik heb nog nooit iets gemaakt waarbij mensen de insert statement gebruiken
Ik heb nog nooit iets gemaakt waarbij mensen de insert statement gebruiken
Als je mysql "best goed beheerst", dan kan het toch bijna niet anders dan dat je ook ervaring hebt met een insert-query?! Het werken met query's is naar mijn idee de basis van mysql.
Met weinig moeite had je kunnen achterhalen hoe je dat unieke (automatisch toegekende) id kunt realiseren (veld met auto_increment)
Overigens spelen bij een update-query (wel ervaring mee?) ook risico's op MySQL Injection.
Obelix en Idefix op 26/03/2014 10:01:07:
Mij is je probleem niet duidelijk:
wil je weten hoe het werkt met dat unieke id?
Wil je weten hoe je gegevens (veilig) toevoegt aan een database?
Wil je weten hoe je die url maakt?
Als je mysql "best goed beheerst", dan kan het toch bijna niet anders dan dat je ook ervaring hebt met een insert-query?! Het werken met query's is naar mijn idee de basis van mysql.
Met weinig moeite had je kunnen achterhalen hoe je dat unieke (automatisch toegekende) id kunt realiseren (veld met auto_increment)
Overigens spelen bij een update-query (wel ervaring mee?) ook risico's op MySQL Injection.
wil je weten hoe het werkt met dat unieke id?
Wil je weten hoe je gegevens (veilig) toevoegt aan een database?
Wil je weten hoe je die url maakt?
Colin h op 25/03/2014 20:53:22:
Op zich beheers ik PHP en MySQL best goed.
Ik heb nog nooit iets gemaakt waarbij mensen de insert statement gebruiken
Ik heb nog nooit iets gemaakt waarbij mensen de insert statement gebruiken
Als je mysql "best goed beheerst", dan kan het toch bijna niet anders dan dat je ook ervaring hebt met een insert-query?! Het werken met query's is naar mijn idee de basis van mysql.
Met weinig moeite had je kunnen achterhalen hoe je dat unieke (automatisch toegekende) id kunt realiseren (veld met auto_increment)
Overigens spelen bij een update-query (wel ervaring mee?) ook risico's op MySQL Injection.
Ik beheers alle queries wel, maar misschien lag mijn vraagstelling een beetje verkeerd.
Het ging dus meer om, hoe maak je op de meest veilige manier een insert query met een uniek ID toegekend.
En daarbij kwam dan mijn vraag over de URL.
Ik had al wel gehoord van een auto_increment veld, maar ik wist niet hoe je dit benaderd via PHP.
Ik zal het probleem nog een keer snel uitleggen:
1. gebruiker vult velden in
2. waardes worden gesubmit en er wordt een uniek ID aan toegekend
3. waardes (eventueel al met uniek ID, of dit gebeurt pas na het inserten) worden op een veilige manier geinsert
4. gebruiker wordt doorgestuurd naar een nieuwe pagina waarbij dat net gegenereerde unieke id in de url staat, zodat de pagina via de url en het unieke ID de waardes kan ophalen en tonen
De onderstreepte dingen waren mij niet duidelijk. Ik denk dat ik met de gegeven antwoorden al een aardig eind kan komen.
Gewijzigd op 26/03/2014 10:57:41 door Colin h