Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-05-2011, 15:09   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
[Solved] Überschüssiges " ' " aus dem nichts?!

Hallo zusammen.

Ich könnte echt am Rad drehn. Jetzt habe ich alles soweit in meinen Scripten erledigt und möchte jetzt meine Daten auf dem Server speichern - aber Pustekuchen.

In mein Query für die SQL-Anweisung schreibt sich immer ein " ' ".
Und ich kann mir dieses nirgends finden:

PHP-Code:
// in einer Schleife
$id 0;
$id $gesammtArray[$j][27];    
echo  
$gesammtArray[$j][27];    // ergibt 1234567 in Flash
$query .= " WHERE $index = ' ".$id." ';";
... 
Resultiert in:

Zitat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = '1'' at line 1
Ich habe meinen ganzen Code nochmal nach überschüssigen " ' " durchsucht und mir auch alle Werte in Flash ausgeben lassen. Aber ich finde einfach nicht wo es her kommt.

Entferne ich die " ' " im $query ist immernoch ein " ' " vorhanden.

Bin ich einfach nur blind? Wäre nett wenn mir jemand helfen könnte

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6

Geändert von dr monk (11-05-2011 um 18:58 Uhr) Grund: Lösung siehe weiter unten
dr monk ist offline   Mit Zitat antworten
Alt 11-05-2011, 15:24   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
- Mach mal anstelle von echo var_dump
- Warum behandelst du $id wie ein String wenn es doch eine Zahl sein soll, lass also die einfachen Anführungszeichen in der Query mal weg
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 11-05-2011, 16:32   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Zitat:
Zitat von Nightflyer Beitrag anzeigen
...
- Warum behandelst du $id wie ein String wenn es doch eine Zahl sein soll, lass also die einfachen Anführungszeichen in der Query mal weg
Hatte ich ja bereits gemacht mit dem selben Resultat (siehe Post oben).

Wenn ich mir die Werte mit var_dump ausgeben lasse bekomme ich folgendes:

Zitat:
string(1) "1"
string(1) "2"
string(1) "3"
string(1) "4"
string(1) "5"
string(1) "6"
string(1) "7"
Sehr merkwürdig das Ganze
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 11-05-2011, 17:31   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Zitat:
// in einer Schleife
$id = 0;
$id = $gesammtArray[$j][27];
echo $gesammtArray[$j][27]; // ergibt 1234567 in Flash
$query .= " WHERE $index = ' ".$id." ';";
...
ich glaube nicht, dass ein ' das Problem ist, sondern mehrere WHERE-Blöcke
Code:
SELECT x FROM y WHERE id='1'; WHERE id='2'; ...
Zitat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = '1'' at line 1
ich würde behaupten, der mag das WHERE an der Stelle nicht
lass dir mal das gesamte Query ausgeben, nachdem du es zusammengebaut hast und BEVOR du es sendest.

was genau soll das Query bewirken? (bzw die WHERE-Klausel)
alle Datensätze, die eine ID aus dem übergeben Array enthalten?
PHP-Code:
function createWhereClause(&$arr){
    
$out = array();
    
$i 0;
    foreach (&
$arr as &$row){
        
//Bedingungen einfügen, wasauchimmer
        
$out[$i++] = $row[27];
    }

    if(
$i 0){
        return 
" WHERE id IN ("join(", ", &$out) .")";
    }else{
        return 
"";
    }
}

$query "SELECT x FROM y"createWhereClause($gesammtArray) .";"
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (11-05-2011 um 17:44 Uhr)
thomas_E ist offline   Mit Zitat antworten
Alt 11-05-2011, 17:59   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Danke für deine Antwort Thomas.

Ich habe den Fehler jetzt (glaub) gefunden. Ich erstelle ein dynamisches Query in meiner Schleife und bastel es dort mit "," zusammen. Wenn ein Element keinen Wert hat wird es nicht hinzugefügt und wenn es sich um das letzte Element handelt wird das "," weggelassen.
Wenn nun das letzte Element bei mir keinen Wert hat und dementsprechend weggelassen wird befindet sich vor dem WHERE id = ... ein Komma:

Zitat:
....jpg', WHERE id = '3';
Ich werde meine Schleife nochmal überarbeiten aber ich gehe stark davon aus, dass es daran liegt.
Den Fehler hatte ich vorher nicht erkannt da ich den mysql_query ausserhalb der Schleife aufgerufen hatte (was mir nur den letzten Wert ausgegeben hatte in dem der Umstand nicht vorkommt).

Manchmal ist es doch auch mal gut ein paar Stunden was anderes zu machen und dann mit neuen Ideen dran zu gehn.

MfG Monk

////////////// EDIT \\\\\\\\\\\\\\\\\\


Hier noch mein leihenhafter Code. Mit dieser Schleife baue ich aus mehrdimensionalen Arrays einen MySQL-Eintrag zusammen.
Mein Array besteht aus den Einträgen eines DataGrids aus Flex (Zeilen/Spalten).
Zitat:
$laenge = Anzahl der Einträge
$spaltenNamen = Namen der Spalten der Datenbank == dataField-Namen der DataGrid-Columns
$gesammtArray = erste Ebene: Spalten / zweite Ebene Werte
Vielleicht geht es auch einfacher - aber das hier ist was ich mir selbst zusammengereimt habe

PHP-Code:
for($j 0$j$laenge$j++){        
    
$query "UPDATE $tabelle Set ";    // erster Teil des Querys
    
    
for($k 0$k count($spaltenNamen); $k++){    
        if(
$gesammtArray[$j][$k] != ""){    // wenn das Element nicht leer ist wird ein neuer Eintrag hinzugefügt
            
$query .= $spaltenNamen[$k]." = '".$gesammtArray[$j][$k]."',";    // Achtung am Ende darf kein Leerzeichen stehen!
        
}
    }
    
$query trim$query',' );      // das letzte "," wird entfernt
    
    //     Definieren wo der Eintrag gemacht werden soll
    
$id 0;
    
$id $gesammtArray[$j][count($spaltenNamen)];    // in meinem Fall ist die ID das letzte Element
    
$query .= " WHERE $index = '".$id."';";            // fertigstellen des Querys
    
    
echo $query."\n--------\n";    // für Kontrolle in Flex
    
    // Query ausführen um in die Datenbank zu schreiben
    
$eintragen mysql_query($query) OR die(mysql_error());

Vielleicht hielft es ja dem ein oder anderem.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6

Geändert von dr monk (12-05-2011 um 08:57 Uhr) Grund: Nachtrag des Codes
dr monk ist offline   Mit Zitat antworten
Alt 12-05-2011, 06:41   #6 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Mann nehme implode() anstatt einer Schleife!!!

Code:
for($j = 0; $j< $laenge-1; $j++){        // -1 da mein letztes Element mein Prinärkey ist
    $query = "UPDATE $tabelle Set ".implode( ", ", $spaltenNamen[$k]." = '".$gesammtArray[$j][$k]."' WHERE ".$index." = ".$gesammtArray[$j][count($spaltenNamen)]." ";
    echo $query."\n--------\n";    // für Kontrolle in Flex
    
    // Query ausführen um in die Datenbank zu schreiben
    $eintragen = mysql_query($query) OR die(mysql_error());
}
Ich denke das liesse sich noch mehr optimieren
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wo ist find ich die Leiste mit "Normal", "Darüber", "Gedrückt" und "Aktiv" maggi198 Flash Einsteiger 2 19-10-2006 21:33
altes session-skript "geupdated"... nun geht nichts mehr.. cRaZy Chrisi PHP und MySQL 9 06-04-2005 10:43
gewisse anzahl an pixeln-"nichts" in textfield Dr. Gonzo ActionScript 1 3 05-04-2004 08:31
Einbelnden der News aus dem "Nichts" Chricraft Flash 4 und Flash 5 7 12-12-2003 07:53
Kleiner verflixter"nichts" fehler EMSI ActionScript 1 4 19-09-2001 13:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele