Tom: Apostrophe in MySQL-Tabelle

Beitrag lesen

Hello Sacha,

wahrscheinlich reden wir gerade aneinander vorbei, aber ich habe das jetzt bei mir so hingebastelt, dass es geht. Erläuterung kommt dann heute Abend.

Wenn Du testen willst:

Leg Dir eine Tabelle mit dem Namen DYNFUNC an mit den Feldern:

ID      unsigned int primary autoincrement
FUNC    text

Und hier der Code:

<?php  ### dyn_func.php ###

error_reporting(E_ALL);

bitte username und Passwort anpassen:

$con = mysql_connect('localhost','thomas','thomas') or die('keine Serververbindung möglich');

bitte Datenbankname anpassen:

$db =  mysql_select_db('thomass',$con) or die('kann Datenbank nicht öffnen');

hier werden die Funktionen definiert

$string = "echo '<a href=\"'.basename($_SERVER['PHP_SELF']).'?id=1\">News</a><br />';";

echo "String: ".nl2br(htmlentities($string))."<br />\n";

Die Variable ($_) muss maskiert werden, da sie ja erst zur Ausführungszeit mit eval() ersetzt werden soll durch den dann geltenden Wert.

Die " müssen doppelt maskiert werden, da ja der Backslash auch in die Datenbank soll

$upd_string = mysql_escape_string($string);

echo "escaped String: ".nl2br(htmlentities($upd_string))."<br />\n";

An die MySQL-Schnittstelle muss ein escaped String übergeben werden

$sql = "insert into DYNFUNC set FUNC = '$upd_string'";
mysql_query($sql,$con) or die('kann insert nicht durchführen: '.htmlentities(mysql_error()));

$sql = "select FUNC from DYNFUNC where ID = ".mysql_insert_id();

$res = mysql_query($sql,$con) or die('kann Abfrage nicht durchführen: '.htmlentities(mysql_error()));

if($res)
{
  $_rec = mysql_fetch_assoc($res);
  $string = $_rec['FUNC'];

in $string sollte jetzt ++echo '<a href="' . basename($_SERVER['PHP_SELF']) . '?id=1">News</a><br />++ drinstehen. (++ sind meine Hilfshäkchen für die Darstellung)

das lassen wir uns jetzt mal ausgeben zur Kontrolle:

echo "String aus DB: ".nl2br(htmlentities($string))."<br />\n";

und dann mit eval ins Script holen und ausführen:

eval ($string);
  echo nl2br(htmlentities($php_errormsg));
}

?>

Viel Spass noch

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau