.
|
|
| Autor | Beitrag |
|---|---|
|
000 30.11.2005, 12:10 Tubgirl |
Mich interessiert der Unterschied zwischen
Dabei setzen sich die beiden so zusammen:
Ich bin mit meinem Latein am Ende und setze nun alle Hoffnung auf euch. Hier noch die Struktur meiner Tabelle:
Die Problemquerys sind in Zeile 75 (funktioniert) und Zeile 114 (funktioniert nicht). Bestimmt ist das irgendwas offensichtliches, was ich seit mehreren Tagen andauernd übersehe D: --Dieser Beitrag wurde am 30.11.2005 um 12:11 von -Sir_Pepe- bearbeitet. |
|
Profil || Suche |
|
001 02.12.2005, 11:25 Tubgirl |
Da dieses Nopaste-Teil jetzt tot ist, hier nochmal der Code: http://www.planet-pepe.net/stuff/script.txt -- |
|
Profil || Suche |
|
002 02.12.2005, 11:49 WareWolf |
dieser *PUSH* hat Stil Pepe ;) --Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴ |
|
Profil || Suche |
|
003 13.12.2005, 13:36 Tubgirl |
Hat denn wirklich niemand eine Idee? -- |
|
Profil || Suche |
|
004 13.12.2005, 15:56 K-Putt |
Hab ne Zeit lang herum probiert, aber bin leider auch ratlos. Das einzige, was mir einfällt, und selbst schon mal passiert ist: Ein Feld in deiner Tabelle, dass den selben Namen wie ein MySQL-Ausdruck hat, und die DB nicht weiß, ob es der Feldname oder der ein Befehl ist. --Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database |
|
Profil || Suche |
|
005 13.12.2005, 16:27 HammerBlade |
Du kannst das ja mal so zu beheben versuchen:
"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon |
|
Profil || Suche |
|
006 13.12.2005, 17:33 Tubgirl |
Antworten weee \o/ Müsste's dann nicht eine Fehlermeldung ausspucken statt "true" zurückzugeben? Probiert, klappt aber leider nicht. -- |
|
Profil || Suche |
|
007 13.12.2005, 18:28 HammerBlade |
Hast du es schon auf einem anderen SQL-Server probiert? Hast du die beiden Queries nur im Kontext des gepasteten PHP-Scripts getestet oder auch mal in einem eigenen Testscript? Sind die beiden Queries auch auf Byteebene identisch, soll heissen liegt da vielleicht ein Textcodecproblem vor (unwahrscheinlich, vielleicht auch unmöglich, aber irgendwo muss es ja dran liegen)? Edit: Falschrum gedacht. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 13.12.2005 um 18:30 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
008 13.12.2005, 19:05 Jim Panse |
mal den inhalt von $_REQUEST['node'] ausgeben lassen? das sind die einzigen beiden dinge die mir so auffallen, ohne die anwendung im ganzen zu sehen. du kannst dir auch mal prophylaktisch nach jedem query den inhalt von mysql_error() und/oder mysql_warning() ausgeben lassen nur um sicherzustellen, das nicht was mit dem query schiefläuft... -- |
|
Profil || Suche |
|
009 13.12.2005, 19:54 McScore |
Schon mal ganz banal mit ... `script`=\'text.php\' ... versucht? --... und der große böse Wolf bootete und bootete und bootete ... |
|
Profil || Suche |
|
010 13.12.2005, 20:26 K-Putt |
Würde nur einen SQL Fehler ergeben, weil die Backslashes dann im Query auftauchen. Merke: Wird ein String von "" umgeben, braucht man die ' ' im String drin nicht escapen. --Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database |
|
Profil || Suche |
|
011 14.12.2005, 09:39 Zpin |
Kannst du das Problem anders rekonstruieren? ZB nen 3 Zeiler schreiben, der jeder bei sich ausführen kann... Würde bei der Fehlersuche sicher helfen. Evtl. ists ja ein PHP Bug, und dein Server sollte mal updaten. -- |
|
Profil || Suche |
|
012 14.12.2005, 10:29 oxff |
Ja, es lebe die SQL Injection! Wenn wenigstens dann einen PHP Typecast:
mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik |
|
Profil || Suche |
|
013 16.12.2005, 18:54 McScore |
Nahrg... bin ich mal wieder geistig noch abwesender gewesen als sonst. -- ... und der große böse Wolf bootete und bootete und bootete ... |
|
Profil || Suche |
|
014 17.12.2005, 15:08 Tubgirl |
Auf insgesamt drei Servern das gleich Ergebnis... query wird nicht ausgeführt, die If-Abfrage spuckt aber true aus. Das Interessante: mit einem Testscript klappt's. PHP-Quellcode:<?php Gibt "Klappt" aus, ändert das Feld "script" in der "nodes"-Tabelle und alles ist so wie's sein sollte. Die Frage ist nur, warum das im großen Script nicht will.
$_REQUEST['node'] ist eine Zahl und wird auch korrekt übergeben - daran liegt's also nicht. An den Anführungszeichen herumzuspielen hat auch nichts geändert. Das perverse ist ja, dass das Script davon überzeugt ist alles richtig zu machen. If gibt true zurück und MySQL-Fehler gibt's auch keine: Quellcode:SQL[55]: mysql_errno: 0 Verbleiben wir ratlos.
Zur Not könnte ich diese Aufgabe ja erledigen, indem ich den alten Datensatz entferne und einen neuen, bei dem dann "script" anders ist mit INSERT wieder einfüge. Das wäre zwar... doof, würde aber laufen. Dieser Beitrag wurde am 17.12.2005 um 15:15 von -Sir_Pepe- bearbeitet. |
|
Profil || Suche |
|
015 17.12.2005, 15:22 TheTinySteini |
Hm... schonmal probiert die Zeile rauszuloeschen und neu zu schreiben? Eventuell hast du aus $grund nen dummes Sonderzeichen drin, was dir alles kaputt macht *shrugs* --TheTinySteini |
|
Profil || Suche |
|
016 17.12.2005, 15:48 Tubgirl |
Natürlich, mehrfach.
*edit* *edit2* Dieser Beitrag wurde am 17.12.2005 um 16:12 von -Sir_Pepe- bearbeitet. |
|
Profil || Suche |
|
017 17.12.2005, 19:03 Jim Panse |
ok, weiterer tag, weiterer test: lass dir mal an der stelle wo du den query ausführst, den query ausgeben. also etwa so:
so long --Dieser Beitrag wurde am 17.12.2005 um 19:03 von Jim Panse bearbeitet. |
|
Profil || Suche |
|
018 17.12.2005, 20:01 Tubgirl |
Wenn ich den ausgebenen Query in Phpmyadmin einfüge fluppt alles wie es soll. Die MySQL-Klasse (die nicht mein Werk ist) verweden wir seit anbeginn der Zeiten... die hat noch nie irgendwelche Probleme gemacht und ist nichts wirklich besonderes. Das hier ist die Query-Funktion:
*edit* *edit2* Dieser Beitrag wurde am 17.12.2005 um 20:04 von -Sir_Pepe- bearbeitet. |
|
Profil || Suche |
|
019 20.12.2005, 11:49 Tubgirl |
So, ich hab denn mal weitergemacht. Ich hab die einzelnen case-break-Blöcke aus dem obrigen Script der übersichtlichkeit halber mal in einzelne Dateien aufgeteilt. Außerdem habe ich alle Scripts etwas umgebaut, so dass jetzt nicht mehr ein Varchar 'script' behandelt wird, sondern ein Tinyint 'type'. Das Resultat ist das gleiche, aber wesentlich übersichtlicher.
Beide geben true zurück und alles was in der IF-Anfrage steht wird auch brav ausgeführt. Nur eben bekommt die Datenbank das Update des zweiten Query nicht mit. Hier mal der Output des Debuggers für den streikenden Query: -- Dieser Beitrag wurde am 20.12.2005 um 11:52 von -Sir_Pepe- bearbeitet. |
|
Profil || Suche |
|
020 20.12.2005, 12:18 Kriz |
Zumindest ist der Query korrekt, kann also nur semantischer Natur sein... -- K:R-I)Z++ Dieser Beitrag wurde am 20.12.2005 um 12:18 von Kriz bearbeitet. |
|
Profil || Suche |
|
021 20.12.2005, 14:56 hausi |
Benenn die Spalte "type" mal um. Es könnte ev. sein, dass TYPE auch nach dem erstellen noch für den Tabellen Typ (MyISAM, etc.) zuständig ist und deshalb Queries mit einem gleichnamigen Feld ein bisschen ein komisches Verhalten zeigen. -- |
|
Profil || Suche |
|
022 20.12.2005, 23:01 Alcapone |
Gib mal dein query mit echo aus oder speicher es in einer variable ab und gibs dann aus (ohne funktion). Da siehste ob alle werte drinnen stehen. Wenn nicht, dann liegt der Fehler ned am query. --"Everything, that can go wrong, will go wrong" Murphy's Law |
|
Profil || Suche |
|
023 21.12.2005, 10:45 TheTinySteini |
Die Anmerkung von Superhausi koennte stimmen, wuerde mich zwar sehr wundern warum es dann mit type=1 geht und mit type=0 nicht, aber naja... TheTinySteini |
|
Profil || Suche |
|
024 21.12.2005, 11:00 hausi |
Auch dafür hätte ich ev. eine Erklärung... Die Typen haben ev. intern einen Index, der von 1 an aufwärts geht... Da kann das schon sein, dass bei 0 der Query einfach nix macht und mit 1 (was warscheinlich MyISAM entspricht) etwas macht... Edit: Das mit dem escapen ist natürlich eine einfachere Lösung. Ich würde aber, wenn das wirklich das Problem ist, die Spalte trotzdem umbenennen... Dann passiert dir das sicher nicht mehr. -- Dieser Beitrag wurde am 21.12.2005 um 11:01 von Superhausi bearbeitet. |
|
Profil || Suche |
|

