Archief - MYSQL: delete record gaat mis

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Manuuz

Legacy Member
Hey,

Ik gebruik dees sql code om een record uit mijn tabel te verwijderen:
DELETE FROM ledenlijst WHERE ledennr='$_POST[ledennr]'

Wat gebeurt er?
Ik lees de tabel uit, en alle gegevens uit de record zijn verwijderd, maar de record opzich staat er nog.
Dus het indexnr ( primary key ) staat er nog, en de volgende gegevens: naam, voornaam,.... staan wel leeg, dus eigenlijk verwijderd, maar niet helemaal.

Nu in php admin kan je doormiddel van "klikken" ook een record verwijderen, daarbij toont hij de code in een message box. Het is identiek dezelfde code, maar daar wordt de hele rij echt verwijderd..

Bijkomende info: dit gebeurt met dezelfde user/pass op site als in phpmyadmin, dus aan de rechten zou het niet kunnen liggen volgens mij.

Iemand een tip?

Manuuz

Legacy Member
Ik denk dat ik een fout over het hoofd zie; omdat ik nu een probleem heb met een update:

$sql="UPDATE ledenlijst SET naam = '$_POST[naam]', voornaam ='$_POST[voornaam]', adresnr ='$_POST[adresnr]', postcode ='$_POST[postcode]', gemeente='$_POST[gemeente]', telnr='$_POST[telnr]',gsmnr='$_POST[gsmnr]'
WHERE ledennr = '1'";

als ik op het laatste ledennr = '$_POST[ledennr] -> dat komt van een formulier, input type=text, dan werkt het niet. Dus met een vast nr in de sql code wel.

Dus ik vermoed dat het met die delete van het zelfde is.

Misschien moet ik dat eerst omzetten met een of ander functie van text naar getal ofzo.?

orez

Legacy Member
gebruik ook es $_POST["ledennr"] ...

Al uw $_POST vars staan niet tss quotes, bij mijn weten dient da wel zo te zijn om da goed te laten functioneren.

Manuuz

Legacy Member
Mja net even geprobeerd.
Dan krijg ik een error Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING

Want mijn variable begint met $sql="UPDATE -> dus hier worden al dubbele quotes gebruikt.

Dus ik denkt met die dubbele quotes nog es in mijn variabele, dat hij dan afbreekt ofzo.

Toch bedankt.
Het is wel raar, dat ik geen foutmelding krijg, dus hij accepteert die query degelijk. Maar hij voert ze niet uit :s

WHiSPy

Legacy Member
Bekijk het hoofdstuk over string escaping nog eens? You're doing it all wrong.

PHP:
$sql = "DELETE FROM table WHERE veld = '".$_POST['var']."'";

Let vooral op de single en double quotes.

Manuuz

Legacy Member
Om te verwijderen:
Code:
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }mysql_select_db("ttcronse", $con);

mysql_query("DELETE FROM ledenlijst WHERE ledennr='$_POST[ledennr]'");

header("location:testlogin.php");
mysql_close($con);
?>
Resultaat: hij verwijdert de gegevens uit de record, maar de record blijft staan, in tegenstelling met phpmyadmin, met dezelfde sql query, wordt daar wel de record verwijderd.

Code voor het wijzigen:
Code:
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }mysql_select_db("ttcronse", $con);

$sql="UPDATE ledenlijst SET naam = '$_POST[naam]', voornaam ='$_POST[voornaam]', adresnr ='$_POST[adresnr]', postcode ='$_POST[postcode]', gemeente='$_POST[gemeente]', telnr='$_POST[telnr]',gsmnr='$_POST[gsmnr]'
WHERE ledennr = '$_POST[ledennr]'";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
header("location:testlogin.php");mysql_close($con);
?>
Resultaat: hij wijzigt nix, maar krijg geen foutmelding

Code voor record toe te voegen:
Code:
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }mysql_select_db("ttcronse", $con);
  $sql="INSERT INTO ledenlijst (naam, voornaam, adresnr, postcode, gemeente, telnr, gsmnr)
VALUES
('$_POST[naam]','$_POST[voornaam]','$_POST[adresnr]','$_POST[postcode]','$_POST[gemeente]','$_POST[telnr]','$_POST[gsmnr]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
header("location:testlogin.php");mysql_close($con);
?>
deze werkt dan wel.


MIjn form gedeeltelijk:
Code:
<form action="wijziglid.php" method="post">
<table>
<tr><td>Naam: </td><td><input type="text" name="naam" /></td></tr>
<tr><td>Voornaam:</td><td> <input type="text" name="voornaam" /></td></tr>
<tr><td>Adres / nr:</td><td> <input type="text" name="adresnr" /></td></tr>
<tr><td>Postcode: </td><td><input type="text" name="postcode" /></td></tr>
<tr><td>Gemeente: </td><td><input type="text" name="gemeente" /></td></tr>
<tr><td>Tel nr: </td><td><input type="text" name="telnr" /></td></tr>
<tr><td>Gsm nr: </td><td><input type="text" name="gsmnr" /></td></tr>
<tr><td>Lid nr: </td><td><input type="text" name="ledennr" /></td></tr>
</table>
<input type="submit" />

edit: even voorgaande proberen eerst
edit2:
Code:
mysql_query("DELETE FROM ledenlijst WHERE ledennr='".$_POST['ledennr']."'");
op deze manier wordt er nix verwijderd.

Manuuz

Legacy Member
Ik heb een foutje gevonden, stupid stupid stupid, form is niet afgesloten !
Mja alles werkt weer.
Zelf zonder die character escaping leest hij alles goed in. Zal misschien wel properder zijn , maar lag daar toch niet aan.

Allesinds bedankt voor de hulp.

orez

Legacy Member
iets tussen quotes zetten is geen escape hé ...

\ <-- hiermee escape je. Iets tussen quotes zetten is normaal een regel, die ten alle tijde zou moeten gevolgd worden.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan