in het volgende script will ik dat hij als de pagina gelade word onder .php?id= er achter id een getal staat wat in de kolom id in de data base staat verwijderd word alleen ik krijg hier een error bij

<?
$sql = "localhost";
$user = "root";
$pwd = "";
$dbn = "gallery";
mysql_connect($sql,$user,$pwd);
mysql_select_db($dbn);


$image = $_GET['id'];
$result = mysql_query("DELETE FROM 'images' WHERE 'id' = '" . $image . "'");
if($result == 0)
{
echo 'There is A Error Could not delete<br>';
echo mysql_error();
}
else
{
echo "succesfull deleted";
}
?>

de error luid als volgt

You have an error in your SQL syntax near ''images' WHERE 'id' = '6'' at line 1

wie kan mij helpen?
<php
$result = mysql_query("DELETE FROM images WHERE id = '" . $image . "'");
?>

Kolomnamen horen niet tussen back ticks en of aanhanlings tekens.

(Volgende keer hoofdletters/leestekens gebruiken aub,...)
zoals Eris zegt, tabel en kolomnamen niet tussen quotes.

Tevens hoeven numerieke waardes ook niet tussen quotes, dus eventueel kun je de enkele quotes om de variabele weghalen.

En ik vind je manier van opschrijven niet zo handig, je kunt beter het volgende doen. (let op de foutafhandeling!)
<?php
$query = "DELETE FROM 'images' WHERE 'id' = '" . $image . "'";
$result = mysql_query($query) or die (mysql_error());
?>


zo is je code een stuk beter te debuggen omdat je de query apart kunt echoën als dat nodig is.
Vervang $image = $_GET['id']; door het volgende stukje code:
<?
if(isset($_GET['id']) && ctype_digit($_GET['id'])){
$image = $_GET['id'];
}
else {
$image = 0;
}
?>
Nu controleer je of de variabele wel bestaat en uit een getal bestaat.

Wanneer je de query en het uitvoeren van de query ook binnen de if zet, dan kun je de else die hier staat ook aanpassen. Het is dan niet nodig om $image de waarde 0 te geven, dat is eigenlijk onzinnig.

Ps. Let er op dat het maken van de databaseverbinding en het selecteren van de database ook kan mislukken. Jij doet de aanname dat dit altijd goed gaat, daar heb je echter geen enkele garantie op! Controleer dus of het is gelukt. Foutafhandeling is de basis van ieder goed systeem.

Reageren