Identischer Query, unterschiedliches Ergebnis

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Identischer Query, unterschiedliches Ergebnis

    Mich interessiert der Unterschied zwischen

    Code:
    UPDATE cms3_nodes SET script='text.php' WHERE id='1'
    und
    Code:
    UPDATE cms3_nodes SET script='text.php' WHERE id='1'
    Das mag auf den ersten Blick identisch aussehen, ist's aber nicht. Denn Nummer 1 funktioniert, während Nummer 2 das Feld "script" leert statt "text.php" reinzuschreiben.

    Dabei setzen sich die beiden so zusammen:

    Code:
    //Funktioniert
    "UPDATE ".$db->prefix."nodes SET script='".$_POST['path']."' WHERE id='".$_REQUEST['node']."'"
    Code:
    //Funktioniert nicht
    "UPDATE ".$db->prefix."nodes SET script='text.php' WHERE id='".$_REQUEST['node']."'"
    Wenn es umgekehrt wäre, dann würde ich das ja noch verstehen. Hieße dann, dass mein $_POST['path'] (mit dem Inhalt "text.php") nicht richtig übergeben würde. Komischerweise macht aber gerade der Query, der ausdrücklich sagt, dass "script" auf "text.php" zu setzen ist nicht was er soll.

    Ich bin mit meinem Latein am Ende und setze nun alle Hoffnung auf euch. Hier noch die Struktur meiner Tabelle:

    Code:
    CREATE TABLE `cms3_nodes` (
      `id` int(11) unsigned NOT NULL auto_increment,
      `home` int(11) unsigned NOT NULL default '0',
      `title` varchar(64) NOT NULL default '',
      `script` varchar(128) NOT NULL default '',
      `position` int(3) NOT NULL default '0',
      `hidden` tinyint(1) NOT NULL default '0',
      `public` tinyint(1) NOT NULL default '0',
      `intern` tinyint(1) NOT NULL default '0',
      `uniaccess` tinyint(1) NOT NULL default '0',
      `nodelete` tinyint(1) NOT NULL default '0',
      `noedit` tinyint(1) NOT NULL default '0',
      `adminscript` tinyint(1) NOT NULL default '0',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM COMMENT='Inhalts-Baum' AUTO_INCREMENT=17 ;
    Und hier mein Script: http://www.rafb.net/paste/results/3Vcprt80.html

    Die Problemquerys sind in Zeile 75 (funktioniert) und Zeile 114 (funktioniert nicht).

    Bestimmt ist das irgendwas offensichtliches, was ich seit mehreren Tagen andauernd übersehe.
    Wer immer nur tut was er kann lernt nie was neues.

  • #2
    Re: Identischer Query, unterschiedliches Ergebnis

    Schwer zu glauben, dass beide identischen Queries unterschiedliche Ergebnisse bringen sollen ...

    Ich möchte wetten, dass es am einsetzen der POST-Variable liegt - und dass du beim kontrollieren was verkehrt gemacht hast, also dass die Queries eben doch nicht identisch sind.


    In deinem Code hast du auch ein UPDATE, welches das Feld explizit leert: SET script=''
    Bist du sicher, dass bei deinen IFs immer in den richtigen Anweisungsblock verzweigt wird ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Na, das Ding mit POST funktioniert ja. Nur der Query mit SET script='text.php' streikt. Das ist ja das komische.
      Und ja, der richtige Block wird ausgeführt. Sieht man daran, dass nach dem Wechsel das Text-Template angezeigt wird. Außerdem macht der Update ja was - nur nicht was er soll. Er leert das "script"-Feld und schreibt nicht rein was soll.
      Wer immer nur tut was er kann lernt nie was neues.

      Kommentar


      • #4
        Dei Query in Zeile 114 wird doch nur ausgeführt, wenn der Wert für script vorher leer ist bzw. != text.php, was wohl aufs selbe rauskommen dürfte.
        Also leert die Query nicht das Feld, sondern es ist vorher schon leer!
        Das die Query nicht funzt, kann nur an $_REQUEST['node'] liegen.
        mach doch mal vorher echo
        PHP-Code:
        echo "UPDATE ".$db->prefix."nodes SET script='text.php' WHERE id='".$_REQUEST['node']; 
        , also als Zeile 113b. Was kommt raus?
        Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

        Kommentar


        • #5
          Der Query leert durchaus das Feld. Wenn ich mit phpadmin etwas reinschreibe und danach das Script drüberjage (mit der Anweisung in das Feld 'text.php' zu schreiben) kommt am Ende ein leeres Feld raus.
          Die Ausgabe des echo ist ordnungsgemäß UPDATE cms3_nodes SET script='text.php' WHERE id='1'

          Hier nochmal der Code (die url oben ist tot): http://www.planet-pepe.net/stuff/script.txt
          Zuletzt geändert von ChristianM.; 02.12.2005, 10:29.
          Wer immer nur tut was er kann lernt nie was neues.

          Kommentar

          Lädt...
          X