Insert uniek ID in MySQL met PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Colin h

Colin h

25/03/2014 20:53:22
Quote Anchor link
Hallo,

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
 
PHP hulp

PHP hulp

17/11/2024 05:28:57
 
Ken PHP

Ken PHP

25/03/2014 21:45:32
Quote Anchor link
Je kan het beste PDO gebruiken voor het benaderen en manipuleren van je database:

https://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
 
Aad B

Aad B

25/03/2014 22:13:54
Quote Anchor link
Over insert unique ID: 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.
 
Pipo Clown

Pipo Clown

25/03/2014 22:28:01
Quote Anchor link
kijk eens naar de eigenschappen van een auto-increment field
 
Peter  Flos

Peter Flos

26/03/2014 08:44:17
Quote Anchor link
Volgens mij bedoel je dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.'">';
?>
 
Ramon van Dongen

Ramon van Dongen

26/03/2014 09:50:49
Quote Anchor link
Persoonlijk zou ik dan eerder header('Location: bestand.php?id='.$id); gebruiken.

Dus:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

  }

}


?>

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
 
Obelix Idefix

Obelix Idefix

26/03/2014 10:01:07
Quote Anchor link
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?

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

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.
 
Colin h

Colin h

26/03/2014 10:56:25
Quote Anchor link
Heel erg bedankt voor alle reacties! Hier kan ik zeker wat mee!

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?

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

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.