Insert database geeft meerdere rijen
Als ik een rij insert in mijn database, worden er soms 1, soms 2, soms 3 en soms zelfs 4 dezelfde rijen in mijn database ingevoegd. Ik gebruik het volgende script:
$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb", $db);
$sql = "INSERT INTO Berichten (naam, bericht) VALUES ('$_GET[naam]', '$_GET[bericht]')";
$result = mysql_query($sql,$db);
Het is me echt een raadsel waarom php besluit om meerdere rijen in te voegen. Weet iemand hoe dit komt en hoe het is op te lossen? Bij voorbaat dank.
$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb", $db);
$sql = "INSERT INTO Berichten (naam, bericht) VALUES ('" . $_GET[naam] . "', '" . $_GET[bericht] . "')";
$result = mysql_query($sql, $db);
Voor de rest kijk eens of dit stuk code ergens in een lus of functie staat.
Nee dit stuk code staat niet in een lus. Het is namelijk de enige code in het bestand. Dus daar kan het niet aan liggen.
$sql = "INSERT INTO Berichten (naam, bericht) VALUES ('" . $_GET[naam] . "', '" . $_GET[bericht] . "')";
$result = mysql_query($sql, $db);
want dat van jeroen is gewoon goed hoor, zo doe ik het ook, en werkt altijd, jij doet het gewoon dubbelop met die kommas
Je moet vars buiten de quotes halen ho0r :)
Inderdaad Mitch. Je kunt geluk hebben dat je server het goed parsed, maar anders heb je pech en kun je wel eens lang blijven zoeken naar de fout. iig, werk altijd netjes zodat er niet nog eens extra foutjes blijven komen.
@jeroen -> welke SQL draai je?
Ik zie dat het versie 3.23.57 is. Mijn orginele script doet het gewoon. Er wordt altijd een rij aangemaakt in mijn database. Maar het probleem is niet dat er geen rij wordt aangemaakt, maar dat er teveel (dezelfde) rijen worden aangemaakt.
http://dev.mysql.com/downloads/mysql/4.0.html
2) Wat als je de query in de opdrachtregel van mysql typt?
1) Updaten die server -> 2) Wat als je de query in de opdrachtregel van mysql typt?
Als ik hem in de opdrachtregel van mysql intype dan komt er wel gewoon 1 rij bij. Alleen via php komen er meestal meer.
1) Include je het bestand? Zo ja, kijk dan het bestand na waaruit je include.
2)Als het nog niet weg is, doe dan achter $result eens die(); zetten, om te kijken of er achter dit script nog wat gebeurt.
3) Kijk of de $_GET variabelen goed zijn, en overeenkomen met de typen in MySQL.
4) Ik heb geen ID meer :D
2. Dat ga ik zo proberen, ga nu eten. Maar ik denk het niet, aangezien dit de enige tekst is in het bestand.
3. Die komen overeen, anders zou er toch ook geen rij ingevoegd worden in de tabel?
4. Ik heb zelf ook geen idee meer. Anyone else?
Ik heb nu ook optie 2 geprobeerd, maar 't werkt helaas ook niet. Anyways, bedankt voor je hulp
Ik heb nu ook de 2e optie geprobeerd. Maar dat werkte helaas ook niet. Anyway, bedankt voor je hulp.
post je code in zijn 'totaalheid' eens?
<head>
<title>Test</title>
</head>
<body>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
If(isset($_POST[naam))
{
$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb", $db);
$sql = "INSERT INTO Berichten (naam, bericht) VALUES ('$_GET[naam]', '$_GET[bericht]')";
$result = mysql_query($sql,$db);
If ($result)
{
echo "Gelukt.<br>";
}
else
{
echo "Mislukt.";
}
}
else
{
?>
If(isset($_POST[naam))
{
$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb", $db);
$sql = "INSERT INTO Berichten (naam, bericht) VALUES ('$_GET[naam]', '$_GET[bericht]')";
$result = mysql_query($sql,$db);
If ($result)
{
echo "Gelukt.<br>";
}
else
{
echo "Mislukt.";
}
}
else
{
?>
<form method="post">
<input type="text" name="naam"><br>
<input type="test" name="bericht"><br>
<input type="submit" value="submit">
</FORM>
</body>
</html>