ik wil een ip unbannen door het in te voeren in een input.

ik had dit...


<?php


$con = mysql_connect("3","2","1");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("coendamiaan", $con);
$sql="DELETE FROM ipban WHERE (ip)
VALUES
('$_POST[ip]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "IP is unbanned..";
mysql_close($con)


?>

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES ('82.82.83.234')' at line 2



BUT!.......

that dont work :(
Dat is dan ook geen geldige syntax voor een DELETE-query.

<?php
$sql="
DELETE FROM
ipban
WHERE
ip = '".mysql_real_escape_string($_POST[ip])."'
";
?>
mysql_real_escape_string() is er voor de veiligheid, userinput (bv. een POST) mag nooit zonder beveiliging in een query worden gezet. Doe je dat wel, dan moet je niet zeuren dat je op een slechte dag in één klap jouw database kwijt bent.

Vergeet niet om met mysql_affected_rows() te controleren of er wel een record is verwijderd, alleen controleren of de query technisch is gelukt, is onvoldoende. Een query die technisch lukt, kan best wel eens helemaal niets uitvoeren, zie de WHERE in de query. Wellicht is er helemaal geen record die aan de voorwaarden voldoet.

Offtopic: Ik verwijder zelden iets, geef gewoon de status op van een record: "verwijderd" of "actief". Data staat maar zelden in de weg.

Edit: stond nog wat quote-rommel die er niet hoorde te staan.

@Barman: Het is nog vroeg...
De kolom (ip) is onjuist. Dit moet zijn:

$sql="DELETE FROM ipban WHERE ip
VALUES
('$_POST[ip]')";

(ik ga overigens niet verder in op de fout- en beveiligingsgevoeligheid van de code)
Een foutje wat jullie allemaal maakten op de vroege morgen (daarom sta ik ook wat later op, kan het iedereen aanraden) is dat de code nog steeds een php notice zal achterlaten. $_POST[ip] ip hoort tussen '-quotes. $_POST['ip']
dankje it workes :)

Reageren