• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

SQL-UPDATE-String Syntax

Datschi

Reinette de Champagne
Registriert
08.11.04
Beiträge
415
Hi Ihr.
Ich mal wieder. Hab nen Problem mit nem simpelen Update-SQL-String in PHP.
Sieht jetzt so aus, will aber nicht funktionieren:
Code:
$sql = "UPDATE $user_table SET session_id=$s_id WHERE id='".$user['id']."'";

Die dazugehörige Fehlerausgabe ist diese:
Code:
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 'SET session_id=345785 WHERE id='1'' at line 1

Ich hoffe, euch fällt der Fehler auf.
Andere Strings, die ich in dieser Syntax verfasst habe, funktionieren.
Aber vielleicht ist der Fehler ja auch völlig trivial und ich seh den Wald vor lauter Bäumen nicht...:-!

Danke schonmal!

Der Datschi
 
Code:
$sql = 'UPDATE $user_table SET session_id="$s_id" WHERE id="'.$user['id'].'"';

gehts so?
 
Zuletzt bearbeitet:
mir ist nur aufgefallen, dass um $s_id, die Hochkomma fehlen
Code:
session_id='$s_id'

Gruss Gregor
 
Kann ich jetzt nicht überprüfen. Bin nicht mehr auf Arbeit.
Mach ich aber morgen und sag dann bescheid.

Danke erstmal für die Idee!
 
Ich würde sagen $user_table ist ein leerer String. Bei solchen Fehlern ist es immer gut, sich die komplette Abfrage anzeigen zu lassen. Hier: print($sql).
 
Stimm eigentlich, ich denke Nogger hat Recht....
Und wenn du's ganz korrekt haben willst (aber wozu? ;-)) dann so:

$sql = "UPDATE `$user_table` SET `session_id` = '$s_id' WHERE `id` = '".$user['id']."'";

gruß
 
Gibt es in PHP eigentlich nicht sowas wie Perl? Dort kann man den SQL String mit "prepare" vorbereiten. Dabei werden Platzhalter gesetzt, die dann beim Aufruf ersetzt werden. Dabei geht man dan sicher, daß Sonderzeichen in den eingestzten Werten keine Probleme verursachen. Was ist in diesem Beispiel zu erwarten, wenn $s_id einen wer hat, der ein ' enthält. Zum Beispiel $s_id= "123', spaltenname='andererwert"
 
Nicht direkt (bzw. ich kenne sowas nicht^^), aber es gibt z.B. die Funktion addslashes($wert), das maskiert evnetuelle ' oder "..
 
Whoa, so viele Antworten.
Ich merke immer wieder, wie Klasse das hier ist.
Eigentlich dürfte aber $user_table ist ziemlich sicher nicht leer.
Werd ich aber überprüfen. Morgen früh um 9 gibts weitere Infos ob einer eurer Tips
geholfen hat. Irgendwie macht SQL mit PHP keinen Spaß :D

Naja...bis morgen dann ^^
 
Gibt es in PHP eigentlich nicht sowas wie Perl? Dort kann man den SQL String mit "prepare" vorbereiten.

Doch, natürlich. Die Technik an sich nennt sich "prepared Statements" und kann beispielsweise mit mysqli_stmt_prepare genutzt werden.
 
oh mann! Also, $user_table war tatsächlich leer. Ihr glaubt gar nicht, wie doof man manchmal sein kann. Naja...musste ne Menge umbauen, bin aber wieder an dem SQL String. Ma sehn, ob jetzt einer eurer Vorschläge klappt!
 
ok! Problem gelöst:
String sieht jetzt so aus:

Code:
$sql = "UPDATE $user_table SET session_id='".$s_id."' WHERE id='".$user['id']."'";

Danke für eure Hilfe!
 
Noch ein kleiner Tipp: Wenn du weißt dass in die Spalte eine Zahl eingetragen wird, kannst du dir das Hochkomma sparen. Nur wenn ein Textstring ankommen soll muss das Hochkomma verwendet werden.

Grüße
duderino