Mysql Feld leeren

thommy1972

Mitglied
Bräuchte mal wieder Hilfe :)
Versuche mittels UPDATE eine Spalte zu leeren.
Dazu bediene ich mich eines Form Feldes:
PHP:
<form action="loeschbild.php" method="POST">
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<input type="submit" name="loesch" value="Bild l&ouml;schen" />
</form>

loesch.php:
PHP:
<?php
error_reporting(E_ALL);
include ("../header.php");
include ("connect.php");
$id = $_POST["id"];
$loesch=("UPDATE `news` SET `bild` = '' WHERE id = $id");
mysql_query($loesch);
echo "Bild entfernt !";
mysql_close();
?>

Leider macht er alles ausser die Spalte löschen...
Woran könnte das liegen ?

Thommy
 
Stimmt auch wirklich die ID, gib doch mal das ausgewertete Query aus:
PHP:
$loesch = "UPDATE...";
echo $loesch;

Außerdem würde ich dir empfehlen, die POST-Variable $id zuerst zu einer Zahl zu konvertieren, damit keine Gefahr seitens SQL-Injection besteht:
PHP:
$id = (int)($_POST['id']);
 
UPDATE loescht auch nicht wirklich eine Zeile. Es schreibt dir hoechstens einen 'leeren' Wert hinein.
PHP:
"DELETE FROM `news` WHERE `news`.`id` = $id LIMIT 1"
sollte die Zeile auch entfernen.
 
Er will aber aber nur den Wert der Spalte bild eines Datensatzes leeren.
Man kann keine Spalte speziell für einen Datensatz löschen, entweder alle Werte für die Tabelle oder nur leeren.
 
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.
 
Er will aber aber nur den Wert der Spalte bild eines Datensatzes leeren.
Man kann keine Spalte speziell für einen Datensatz löschen, entweder alle Werte für die Tabelle oder nur leeren.

ok da hab ich mich vertan . .. jedenfalls:
PHP:
<form action="#" method="POST">
<input type="text" name="id"/>
<input type="submit" name="loesch" value="Bild l&ouml;schen" />
</form>
<?php
error_reporting(E_ALL);
$db_link = @mysql_connect('localhost', 'root', 'keins');
mysql_select_db('test') OR die(mysql_error());
$id = (int)$_POST["id"];
$loesch=("UPDATE `news` SET `bild` = '' WHERE id = $id");
mysql_query($loesch);
echo "Bild entfernt !";
mysql_close();
?>
Funktioniert bei mir. Was bedeutet das der Fehler wohl da liegt:
PHP:
<input type="hidden" name="id" value="<?php echo $id; ?>" />
und schaetzungsweise in der var. $id entweder nichts oder was falsches steht.

ed. gib sie dir am einfachsten mal aus mit z. B.
PHP:
echo "Bild entfernt mit der ID = ".$id;
 
Zuletzt bearbeitet:
Gibt es für das Löschen 2 separate Dateien?

Das Formular in dem die ID gesetzt wird, ruft nach dem Abschicken die Datei "loeschbild.php" auf.
Bei dem Code den du zum Löschen nimmst, schreibst du aber "loesch.php" darüber!?

Wird dieser Code dann überhaupt aufgerufen oder ist es nur ein Schreibfehler beim Dateinamen?
 
Zurück