Probleme mit mysql_insert

Transporter

Mitglied
Hallo Leute !

Ich will in meine Nachrichtendatenbank generierte Nachrichten abspeichern. Diese enthalten teilweise Tabellen in denen bestimmte Werte angezeigt werden sollen. Diese Werte sind dann bereits vorher generierte Variablen.

Quasi so:
PHP:
$txt = "<table width=100% cellspacing=0 cellpadding=0><tr><td><img src=images/arrow/green.gif> <span class=q>Wert 1:</span></td><td class=a>$new</td></tr><tr><td><img src=images/arrow/green.gif> <span class=q>Bonus:</span></td><td class=a>+ $bonus</td></tr></tr><tr><td></td><td><hr size=1></td></tr><tr><td><img src=images/arrow/big_green.gif> <span class=q>Ergebniss:</span></td><td class=a><b>$erg</b></td></tr></table>";

Dieser Text wird dann über einen mysql_insert in meine Datenbanktabelle integriert:
PHP:
  mysql_query
    ("INSERT INTO com (class_id, library_id, group_id, sender_id, user_id, text, show_timestamp, timestamp) VALUES ".
     "('$class_id', '$library_id', '$group_id', '$sender_id', '$user_id', '$txt', '$show_timestamp', ".time()." - $time_diff)", $gbl);

das funktioniert auch eigentlich super, denn es werden die vorher berechneten Werte der Variablen $new, $bonus und $erg an dieser stelle eigefügt.

Jetzt kommen wir zu meinem Problem.

Eigentlich ist die Variable $txt bereits ein vorgefertigter Text in einer Datenbank den ich nur selecten will und anschließend wieder über den gleichen mysql_insert einfügen will. Also so:

Das ist meine vorherige $txt Variable die ich eigeltich weg lassen möchte.

PHP:
  $com = mysql_fetch_object
    (mysql_query("SELECT text FROM com WHERE com_id = '$define_id'", $gbl));

In $com->text steht genau das selbe drin wie in $txt.

Allerdings werden die Variablen nicht durch die entsprechenden Werte ausgetauscht, sondern in der abgespeicherten Nachricht stehen dann die Variablennamen und nicht der Inhalt.

Es wäre schön, wenn Ihr mir weiterhelfen könntet.
 
Okay,

wenn ich den Text, der in meiner Datenbank abgespeichert werden soll, über die Variable $txt einfüge, werden die Variablennamen die in $txt stehen, durch deren Inhalt ersetzt.

Wenn ich den Text aber aus meiner Datenbank vorher auslese und ihn dann über die gleiche mysql_insert Methode wieder integriere, dann werden die Variablennamen und nicht deren Inhalt abgespeichert.

Über diese Methode funktioneirt es nicht:
PHP:
$com = mysql_fetch_object
  (mysql_query("SELECT text FROM com WHERE com_id = 12920", $gbl));

// $com->text ist meine gewollte $txt

  mysql_query
    ("INSERT INTO com (class_id, library_id, group_id, sender_id, user_id, text, show_timestamp, timestamp) VALUES ".
     "('$class_id', '$library_id', '$group_id', '$sender_id', '$user_id', '$com->text', '$show_timestamp', ".time()." - $time_diff)", $gbl);

Es werden dann wie gesagt die Variablennamen und nicht deren Ihalt, der bereits vorher errechtet wurde, abgespeichert.

Mit dem Variable parsing muß es etwas zu tun haben, aber ich weiß nicht genau, wo ich ansetzen woll.
 
Hi,

das sollte funktionieren, auch wenn das eine unübersichtliche Schreibweise ist. Mach mal direkt vorher ein var_dump() auf $com.

LG
 
Ja ist richtig wie kuddeldaddeldu schon gesagt hat liegt das am String Parsing
heißt konkret du musst deine Variablen in '..' einschließen dann sollte alles funktionieren.

PHP:
'.$class_id.'

Gruß
Evo
 
Hi,

heißt konkret du musst deine Variablen in '..' einschließen dann sollte alles funktionieren.

PHP:
'.$class_id.'

das ist in diesem Fall nicht das Problem, da Variablen in double quoted Strings geparst werden. Wenn Du den Abfragestring aus dem Post herauskopierst und vorher ein paar Wertzuweisungen an die Variablen machst, funktioniert das tadellos, auch wenn es nicht die Schönste aller Schreibweisen ist.

LG
 
Moin noch mal,

das mit dem '..' funktioniert nicht. Hab vorher auch schon alle Möglichkeiten ausprobiert.
Ich versteh nicht so recht was Du meinst. Kannst Du mal ein Beispiel machen kuddeldaddeldu?
 
Das funktioniert auch nicht

Folgender Text wird ausgegeben
PHP:
object(stdClass)(1) { ["text"]=>  string(430) "
Mein Text mit Namen der Variablen nicht Inhalten!" }
 
Ich habs jetzt bei mir mal getestet bei mir geht alles ohne probs.
Kann nur vermuten das du irgendwo anders noch einen kleinen fehler hast.

Welchen Datentyp hast du für den Text in der DB verwendet?
 
Zuletzt bearbeitet:
Zurück