SorgenkindMech: MySQL problem - kurios

moins ihr ...

ich steh mal wieder voll aufm schlauch und weiß nich woran es liegen kann

ich will per php n paar mysql-querys machen
der eine query setzt alle felder in der tabelle auf 0 (INT)

und dann gibt es mehrere querys, die einige der felder wieder auf 1 setzten sollen

alle auf 0 funktioniert, aber auf 1 nicht, seltsamerweise

also was hab ich gemacht

erstmal in der console mit selben benutzer angemeldet und getestet - funktioniert (natürlich exakt die selben querys wie in der php-datei)

beispiel: update security set irgentwas='1' where user='Wolfgang';

wie gesagt, konsole ok, im php-script nix

mysql_affected_rows ergibt 0
in der konsole: gefunden 1, geändert 1, warnungen 0

was kann das sein?
und wie gesagt, 3 zeilen vorher der query in der php-datei funktioniert einwandfrei .... und dazwischen is nix was die verbindung zu mysql beeinflusst

abgesehen davon funktioniert das script auf jedem anderen server...

hier paar sys-spec:
win2000 pro SP4
mysql 4.1
php 5.02
IIS5, php als isapi-modul

zuguterletzt noch ein kleines snippet:

$reset = mysql_query("update security set " . mysql_field_name($fields, $i) . "='0' where user='" . $seluser . "'");
   }
  }

foreach($_POST as $index => $wert)
   {
    if($index!="user" && $index!="action" && $index!="table" && $index!="key")
    {
     $query = mysql_query("update " . $_POST['table']. " set " . $index . "='" . $wert . "' where " . $key . "='" . $feld . "'");
     echo "update " . $_POST['table']. " set " . $index . "='" . $wert . "' where " . $key . "='" . $feld . "'<br />";
     echo mysql_affected_rows($db);
    }

}

ich hoffe jemand weiß rat *verzwifel*

  1. echo $begrüßung;

    erstmal in der console mit selben benutzer angemeldet und getestet - funktioniert (natürlich exakt die selben querys wie in der php-datei)

    Es sind nicht exakt die selben Abfragen. In deinem PHP-Code baust du die Abfragen aus variablen Teilen zusammen. Außerdem ignorierst du Fehlermeldungen, die dir MySQL mit entsprechendem Rückgabewert der mysql_*-Funktionen mitteilen möchte und die du mit mysql_error() abfragen kannst.
    Baue deine Abfrage gemäß Beispiel im Handbuch-Kapitel zu MySQL auf. Beachte dort, dass der Abfragebefehl zunächst in einer Variable zusammengestellt wird, deren Inhalt du dir zu Prüfzwecken ausgeben lassen kannst, sowie die Stellen an denen mysql_error() verwendet wird.

    Bekommst du nun Fehlermeldungen von MySQL? Wenn nicht prüfe deine Statements.

    Außerdem empfiehlt es sich immer noch zum Entwickeln das error_reporting auf E_ALL zu stellen, um weitere wichtige Hinweis-Meldungen von PHP zu erhalten.

    echo "$verabschiedung $name";

    1. echo $begrüßung;

      erstmal in der console mit selben benutzer angemeldet und getestet - funktioniert (natürlich exakt die selben querys wie in der php-datei)

      Es sind nicht exakt die selben Abfragen. In deinem PHP-Code baust du die Abfragen aus variablen Teilen zusammen. Außerdem ignorierst du Fehlermeldungen, die dir MySQL mit entsprechendem Rückgabewert der mysql_*-Funktionen mitteilen möchte und die du mit mysql_error() abfragen kannst.
      Baue deine Abfrage gemäß Beispiel im Handbuch-Kapitel zu MySQL auf. Beachte dort, dass der Abfragebefehl zunächst in einer Variable zusammengestellt wird, deren Inhalt du dir zu Prüfzwecken ausgeben lassen kannst, sowie die Stellen an denen mysql_error() verwendet wird.

      mysql_error() gibt nix aus, es gibt keine fehler, zumindest nicht von mysql aus, das habe ich  schon probiert
      und die statements sind exakt identisch, wie du an meinem ebigen post schon gesehen hast habe ich den query einfach kopiert und per echo ausgegeben, den dann in der konsole getestet und es funktionierte

      Bekommst du nun Fehlermeldungen von MySQL? Wenn nicht prüfe deine Statements.

      ... wie gesagt ...

      Außerdem empfiehlt es sich immer noch zum Entwickeln das error_reporting auf E_ALL zu stellen, um weitere wichtige Hinweis-Meldungen von PHP zu erhalten.

      ist natürlich immer aktiviert

      echo "$verabschiedung $name";

      bis denn, und schonmal danke für deine kommentare

      1. echo $begrüßung;

        mysql_error() gibt nix aus, es gibt keine fehler, zumindest nicht von mysql aus, das habe ich  schon probiert

        Was gibt denn das mysql_query() zurück? Lass dir das mal mit var_dump() anzeigen. Also bezogen auf dein "snippet" var_dump($reset); und var_dump($query); unmittelbar nach dem jeweiligen mysql_query-Befehl.

        echo "$verabschiedung $name";

        1. echo $begrüßung;

          mysql_error() gibt nix aus, es gibt keine fehler, zumindest nicht von mysql aus, das habe ich  schon probiert

          Was gibt denn das mysql_query() zurück? Lass dir das mal mit var_dump() anzeigen. Also bezogen auf dein "snippet" var_dump($reset); und var_dump($query); unmittelbar nach dem jeweiligen mysql_query-Befehl.

          echo "$verabschiedung $name";

          ICH HABS!!!!!

          boarrrr ..........

          es ist ja zum heulen..

          vor dem ganzen kram stand noch ein mysql_list_fields("andere_db","tabellenname");
          statt mysql_list_fields($db_name,"tabellenname");

          dadurch wurde wohl die db geändert und somit auch nix mehr gefunden .... *ärger*

          jaja, so kanns gehen ;)

          bis denn dann

          1. echo $begrüßung;

            vor dem ganzen kram stand noch ein mysql_list_fields("andere_db","tabellenname");
            statt mysql_list_fields($db_name,"tabellenname");

            dadurch wurde wohl die db geändert und somit auch nix mehr gefunden .... *ärger*

            Das Ausnutzen von PHPs Zuvorkommen dem Programmierer gegenüber rächt sich auch gelegentlich. Wenn ein Script nur mit einer Datenbankverbindung gleichen Typs arbeitet, ist es eindeutig, welche Verbindungskennung zu verwenden ist. PHP kann aber nicht erraten, welche es jeweils nehmen soll, wenn mehrere Verbindungen augebaut werden. Welche es nimmt ist im Handbuch dokumentiert. Wenn man sich angewöhnt den link_identifier-Parameter immer mit anzugeben, bekommt man auch nicht solche Effekte. :-)

            echo "$verabschiedung $name";