PHP aus Datenbank auslesen

Ich möchte aus meiner SQL Datenbank dynamische Seiten generieren und hab deswegen in der Datenbank PHP-Code. Allerdings stoße ich auf Probleme, wenn ich diesen Code bearbeiten möchte. Wenn z.B. ein Feld ausgelesen wird und und anschließend wieder eingefügt werden soll, stellt sich die DB quer. Es muß am PHP-Code liegen, da Felder mit normalem Text keine Probleme darstellen. Gibt´s da einen Trick ?

Ulrich

Ich möchte aus meiner SQL Datenbank dynamische Seiten
generieren und hab deswegen in der Datenbank PHP-Code.

klingt nach nem ganz kuriosen konzept.

Wenn z.B. ein Feld ausgelesen wird und und
anschließend wieder eingefügt werden soll, stellt sich die DB
quer.

öhm. wie hast du es denn da reingekriegt…

Es muß am PHP-Code liegen, da Felder mit normalem Text
keine Probleme darstellen. Gibt´s da einen Trick ?

sicher kein trick… wenn du den code in nem normalen textfeldspeicherst, wirst du wohl irgendwo mit den escapesequenzen, oder nem boesen eval durcheinandergekommen sein.

fehlerbezeichnungen…
beispielcode…

Hier der Beispielcode:
(Wenn ich ein anderes Feld (ohne PHP-Code) auf diese Weise updaten will ist das komischerweise kein Problem)

<?php include ("cgi-bin/login.php");
$tabelle = 'az\_content'; $spalte = 'INHALT'; $verbindung = mysql\_connect ($server, $user, $passwort); mysql\_select\_db($datenbank,$verbindung); if ($neu \> ""){ // Wenn Änderungen dann DB aktualisieren $sql\_aendern ="UPDATE $tabelle SET $spalte = '$neu' WHERE $spalte = '$inhalt'"; $eintrag\_aendern = mysql\_query($sql\_aendern,$verbindung); } $sql = "SELECT \* FROM $tabelle WHERE NUMMER = '00200'"; // Code aus DB laden $ergebnis = mysql\_query($sql,$verbindung); while($row = mysql\_fetch\_object($ergebnis)) { $inhalt = $row-\>$spalte; } mysql\_free\_result($ergebnis); mysql\_close($verbindung); ?\> **Code aus Datenbank** <?php echo $inhalt; ?>

Neuer Code

Also 2 Formularfelder. Im ersten der original Feldinhalt - im 2. der neue Inhalt.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

dann lass dir doch einfach mal $sql ausgeben, bevor du das statement ausfuehrst… und pruefe, ob da ueberhaupt richtiges sql rauskommt…

dann lass dir doch einfach mal $sql ausgeben, bevor du das
statement ausfuehrst… und pruefe, ob da ueberhaupt richtiges
sql rauskommt…

Sorry, kenne mich noch nicht so gut aus. Wie soll ich das machen ?

 $sql\_aendern ="UPDATE $tabelle SET $spalte = '$neu' WHERE $spalte = '$inhalt'";
print " -$sql- ";
$eintrag\_aendern = mysql\_query($sql\_aendern,$verbindung);

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Bekomme soetwas zurück:

UPDATE az_content SET INHALT = ‚fgzjkdtzkj‘ WHERE INHALT = ‚[mein PHP-Code]‘

(Allerdings mit einem ‚‘ vor jedem ’ und " !?)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Bekomme soetwas zurück:

UPDATE az_content SET INHALT = ‚fgzjkdtzkj‘ WHERE INHALT =
‚[mein PHP-Code]‘

was du mit den backslashes meintest weiss ich jetzt natuerlich nicht, und ob [mein PHP-Code] in das sql-statement passt sieht jetzt natuerlich auch niemand. also musst du selbst pruefen, ob das ein lauffaehiges sql-statement ist, oder du postetst jetzt mal das, was er dir wirklich ausgibt…

UPDATE az_content SET INHALT = ‚jhtzgvghdck‘ WHERE INHALT = ’ xxx

yyy

<?php include (\"cgi-bin/login.php\");
$verbindung = mysql\_connect ($server, $user, $passwort); mysql\_select\_db($datenbank, $verbindung); mysql\_free\_result($ergebnis); mysql\_close($verbindung); ?\> ' > [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

das hatte ich befuerchtet.

und sag mal selber: kann diese where-bedingung zutreffen?
sieht das schoen aus?

ich denke weder noch.

um diese variante zum laufen zu bringen, musst du wohl die backslashes vor den doppelquotes entfernen, und deine zeilenumbrueche maskieren (beachte dos und evtl mac-umbrueche, fuehre alles in unix-umbrueche ueber).

aber du solltest eine aenderung machen.
fuehre eine spalte id in der datenbank ein. am besten als auto_increment feld.

die id fuehrst du ueber ein hidden-feld mit.
dann brauchst du naemlich nur noch zu sagen:

 update ... set inhalt="foo" where id="27"