Hallo,
ich bin zwar schon einige Zeit dabei aber Familie, Beruf schränkt alles stark ein, sodass ich um Nachsicht bitte. Ich werde erst in nächster Zeit auf mysqli oder gar PDO umstellen.
Es geht um folgendes. Ich möchte die Daten für preg_replace aus einer MySQL Tabelle laden. Das klappt auch super. Nur der insert will nicht.
Ich habe mir vor lager Zeit mal Hilfsfunktionen für MySQL erstellt,
die Funktion mit der ich den preg_replace ausführe sieht wie folgt aus:
Das aufrufen der Funktion lappt Perfekt,
Soweit so gut. In der MySQL Tabelle steht in der Spalte pattern => #\[b\](.*)\[/b\]#isU <= und in der Spalte replace => <b>$1</b> <= der Type (1 für bbcode ) ist in meinem Fall nicht von Bedeutung. Auch aktiv tut nichts zu Sache. Ich habe ein Problem mit dem insert.
Führe ich den insert aus
Was mache ich da falsch? Wie macht phpmyadmin das anders? Denn wenn ich es da eintrage klappt es ja wunderbar.
Das sollte am Ende natürlich in einer Funktion enden.
Also in etwa so
Ich hoffe ihr könnt mir da Licht ins dunkle führen.
Noch eine kleine Anmerkung. Ich habe bisher Klassen immer meiden können und "verstehe" die auch irgendwie nicht so ganz. Aber z.b. die function insert_bbcode(), wie würde die in einer Klasse aussehen? Wäre jemand so nett und würde mir das mal als Klasse hier schreiben? Wäre echt super, das ich die einfach mal irgendwie verstehe.
Ich danke euch vielmals.
ich bin zwar schon einige Zeit dabei aber Familie, Beruf schränkt alles stark ein, sodass ich um Nachsicht bitte. Ich werde erst in nächster Zeit auf mysqli oder gar PDO umstellen.
Es geht um folgendes. Ich möchte die Daten für preg_replace aus einer MySQL Tabelle laden. Das klappt auch super. Nur der insert will nicht.
Ich habe mir vor lager Zeit mal Hilfsfunktionen für MySQL erstellt,
PHP-Code:
<?php
function mysql_selectarray($what, $table, $where)
{
$i=0;
$return = array();
$sql = "SELECT $what FROM ".MYSQL_DB_PRAEFIX."$table $where";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)) {
foreach ($row as $key => $value)
{
$return[$i][$key] = $value;
}
$i++;
}
return $return;
}
function mysql_insert($table, $spalten, $values)
{
$sql = "INSERT INTO ".MYSQL_DB_PRAEFIX."$table ($spalten) VALUES ($values)";
mysql_query($sql);
}
?>
PHP-Code:
<?php
function pregreplace($where = '', $text = '')
{
if ($where)
{
$where = "WHERE type = '".$where."' AND aktiv = '1'";
}
else
{
$where = "WHERE aktiv = '1'";
}
$replace_data = mysql_selectarray("*", "replaces", "$where");
foreach ($replace_data as $wert)
{
$text = preg_replace($wert['pattern'], $wert['replace'], $text);
}
return $text;
}
?>
PHP-Code:
<?php
echo pregreplace("0", "[b]Fetttext[/b[");
?>
Führe ich den insert aus
PHP-Code:
<?php
// Hier bekomme ich logischer Weise einen error weil die ' fehlen.
mysql_insert("replaces", "#\[b\](.*)\[/b\]#isU", "<b>$1</b>");
// Hiermit klappt es, jedoch MySQL Injection
mysql_insert("replaces", "'#\[b\](.*)\[/b\]#isU'", "'<b>$1</b>'");
// Hier klappt der insert, MySQL Injection wird zwar verhindert aber beim select. Sind die Daten auch falsch in der Tabelle also der preg_replace findet dann nichts mehr.
mysql_insert("replaces", mysql_real_escape_string("#\[b\](.*)\[/b\]#isU"), mysql_real_escape_string("<b>$1</b>"));
?>
Das sollte am Ende natürlich in einer Funktion enden.
Also in etwa so
PHP-Code:
<?php
function insert_bbcode($search, $replace)
{
mysql_insert("replaces", "$search", "$replace");
}
?>
Noch eine kleine Anmerkung. Ich habe bisher Klassen immer meiden können und "verstehe" die auch irgendwie nicht so ganz. Aber z.b. die function insert_bbcode(), wie würde die in einer Klasse aussehen? Wäre jemand so nett und würde mir das mal als Klasse hier schreiben? Wäre echt super, das ich die einfach mal irgendwie verstehe.
Ich danke euch vielmals.
Kommentar