rony: Löschen eines Datensatzes

Hallo Gemeinde. Beim löschen eines Datensatzes erhalte ich immer diese Fehlermeldung:

____________________________________________________________________
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wampp2\htdocs\rony\delete.php on line 6

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wampp2\htdocs\rony\delete.php on line 7

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\wampp2\htdocs\rony\delete.php on line 20
____________________________________________________________________

Der Quellcode sieht folgendermassen aus:
________________________________________

<?php require_once('Connections/verwaltung.php'); ?>
<?php
mysql_select_db($database_verwaltung, $verwaltung);
$query_Recordset1 = "DELETE FROM cd WHERE ID = $id ";
$Recordset1 = mysql_query($query_Recordset1, $verwaltung) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<html>
<head>
<title>Delete</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
______________________________________________________

Die Variable von der main_start.php wird so übergeben:

<a href="delete.php?id=<?php echo urlencode($row_Recordset1['id']); ?>">Löschen</a>

Also ich weiss echt nicht mehr wo der Fehler liegt. Alternativ habe ich die Files mal hochgeladen zur Veranschaung- http://www.ronex.ch/rony
Herzlichen Dank für jeden der dies liest, besonders wenn eine Lösung angeboten wird.

MfG rony

  1. Hi,

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wampp2\htdocs\rony\delete.php on line 6

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wampp2\htdocs\rony\delete.php on line 7

    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\wampp2\htdocs\rony\delete.php on line 20

    diese Warnungen kommen durch das Scheitern von mysql_query zustande.
    Was sagt der mysql_error()?

    $query_Recordset1 = "DELETE FROM cd WHERE ID = $id ";

    versuche es mit $_GET["id"] falls register_globals = off sein sollte
    setze den String richtig zusammen
    entweder: "DELETE FROM cd WHERE ID = {$id}"
    oder: "DELETE FROM cd WHERE ID = ".$id

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    1. ciao romy, danke

      hab ich alle mögl. probiert. geht nicht wirklich .. die datensätze werden zwar gelöscht, aber ne fehlermeldung bekomm ich da trotzdem....

      und was Register GLOBALs anbelangt, tut sich da beim Provider nicht sehr vieles.. :-(

      is halt n' Esel ..

      ciao grüsse rony

      1. Hi,

        hab ich alle mögl. probiert. geht nicht wirklich .. die datensätze werden zwar gelöscht, aber ne fehlermeldung bekomm ich da trotzdem....

        das heisst mysql_error() gibt keine Meldung aus? (Da die Datensätze ja trotzdem gelöscht werden)

        und was Register GLOBALs anbelangt, tut sich da beim Provider nicht sehr vieles.. :-(

        ?
        sind sie nun an oder aus? Naja ich schätze, daran liegt es nicht...und Du weisst was zu tun ist ;)

        Es ist wirklich etwas seltsam, ABER: manchmal werden Variablen an irgendeiner Stelle überschrieben und man merkt es gar nicht.
        Wie Christian schon sagte, mach mal n var_dump() mit dem Recordset1
        Wenn es korrekt wäre müsste "resource id#2 " drinstehen...

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
        Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
        Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
        1. Jepp, hat aber nicht gefunzt.
          Trotzdem euch beiden herzlichen Dank, ich werd jetzt erst mal n Bier im Biergarten nehmen. ist nämlich sch...... hitze... lol¨

          man sieht sich dann mal ..
          grüssy rony

    2. Moin!

      Hi,

      oder: "DELETE FROM cd WHERE ID = ".$id
      oder (noch besser):

      oder: "DELETE FROM cd WHERE ID = '$id'"

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Meinereinerselbst ist auf der Suche nach Aufträgen
      1. Hi,

        oder: "DELETE FROM cd WHERE ID = '$id'"

        aber nur wenn die $id ein String ist, was soll ich sonst mit den '' ;)
        oder sehe ich da etwas falsch...?

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
        Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
        Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
        1. Moin!

          oder: "DELETE FROM cd WHERE ID = '$id'"
          aber nur wenn die $id ein String ist, was soll ich sonst mit den ''

          Ich mache es ganz einfach immer so, weil es auch bei einer Zahl nicht falsch ist. Wichtig ist übrigens scheinbar weniger, was Du übergibst, sondern wie das Feld definiert ist.

          Kleiner Tip:

          wenn Du sowas hast wie:

          $sql="DELETE FROM cd WHERE ID = '$id'";
          schreib doch ein:
          echo '<div style="border: thin, solid, red;">'.$sql.'</div>';

          dahinter und lass Dir das SQL-Statement ausgeben.

          Oder erweitere die Ausführung der Abfrage:

          $Recordset1 = mysql_query($query_Recordset1, $verwaltung) or die('<div style="border: thin, solid, red;">'mysql_error().'<br>'.$query_Recordset1.'</div>');

          Dann siehst Du den Fehler und die Ursache.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Meinereinerselbst ist auf der Suche nach Aufträgen
          1. Hi,

            oder: "DELETE FROM cd WHERE ID = '$id'"
            aber nur wenn die $id ein String ist, was soll ich sonst mit den ''
            Ich mache es ganz einfach immer so, weil es auch bei einer Zahl nicht falsch ist. Wichtig ist übrigens scheinbar weniger, was Du übergibst, sondern wie das Feld definiert ist.

            eben, es ist wichtig , wie das Feld definiert ist, wenn es zB ein integer ist und ich übergebe den String '1', sollte es doch eine Fehlermeldung geben!?
            Deswegen dachte ich, Du kannst nicht einfach pauschal sagen, da gehören  Hochkommata drum herum.
            Der Rest des Postings war wohl eher für den Fragesteller.

            ciao
            romy

            --
            DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
            sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
            Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
            Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  2. Hallo rony,

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL
    result resource in C:\wampp2\htdocs\rony\delete.php on line 6

    Das heißt eigentlich, dass der Query nicht erfolgreich war...

    $Recordset1 = mysql_query($query_Recordset1, $verwaltung) or die(mysql_error());

    ... allerdings fängst Du das hier mit dem "or die" ja schon ab... Sieht
    eigentlich alles in Ordnung aus. Seltsam. Hast Du mal probiert,
    $query_Recordset1 mit echo auszugeben? Oder hast Du mal versucht die
    Variable $Recordset1 mit var_dump auszugeben? Vielleicht erkennst Du so
    das Problem.

    Ratlose Grüße,
    Christian

  3. hi,

    blick ins php-manual zum thema mysql_query hilft weiter, zitat:

    "Nur für SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine Ressourcen-Kennung oder FALSE, falls die Anfrage nicht korrekt ausgeführt wurde. Für alle anderen SQL Anweisungen ist der Rückgabewert von mysql_query() im Erfolgsfall TRUE, im Fehlerfall FALSE."

    klartext: mysql_query gibt für ein DELETE-statement keine resource-id zurück, also kannst du auch keine funktion die eine resource-id erwartet, auf die rückgabe anwenden.

    gruss,
    wahsaga

  4. Moin!

    Hallo Gemeinde. Beim löschen eines Datensatzes erhalte ich immer diese Fehlermeldung:

    ____________________________________________________________________
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wampp2\htdocs\rony\delete.php on line 6

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wampp2\htdocs\rony\delete.php on line 7

    ____________________________________________________________________
    $Recordset1 = mysql_query($query_Recordset1, $verwaltung) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
    mysql_free_result($Recordset1);

    Wenn Du löschst gibt es nichts für mysql_fetch_assoc() zu tun.
    Wenn Du löschst gibt es nichts für mysql_num_rows() zu tun.
    Wenn Du löschst gibt es nichts für mysql_free_result() zu tun.
    Deswegen die Fehlermeldungen, obwohl der Datensatz gelöscht ist.

    Wenn Du löschst findest Du die Anzahl der gelöschten Datensätze in mysql_affected_rows()

    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen
    1. Moin!

      Ach ja: Eine deutsche Funktionreferenz (leider etwas veraltet) findest Du unter: http://www.selfphp.info/.

      fastix®

      --
      Meinereinerselbst ist auf der Suche nach Aufträgen