Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Insert INTO mit Sonderzeichen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Insert INTO mit Sonderzeichen


 
xManUx
05-03-2004, 04:27 
 
Hallöchen.. hab ein kleines Problem...

Und zwar hab ich den Befehl:

$sql = "INSERT INTO $forume ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";


Gelegentlich kommt es vor, dass Forume auch Sonderzeichen enthält! Bei meinem Beispiel momentan das Sonderzeichen '

Wenn ich:


$forume = eregi_replace ( '\'' , '\'', $forume );
$sql = "INSERT INTO $forume ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";
mysql_query( $sql, $db ) or die ( mysql_error() );


natürlich bei $forume mit bei dem ersten sonderzeichen '' dieses sonderzeichen \

mache kommt die Fehlermeldung:

You have an error in your SQL syntax near ''s going on?! ( von, thread, ip, browser, zeit, beitrag) VALUES ( 'Manu', 'f', '' at line 1

Wenn ich:


$sql = "INSERT INTO ".'´'.$forume.'´'." ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";
mysql_query( $sql, $db ) or die ( mysql_error() );


mache kommt die Fehlermeldung:
You have an error in your SQL syntax near '´Forum_What's going on?!´ ( von, thread, ip, browser, zeit, beitrag) VALUES ( 'M' at line 1

Weiß nicht mehr weiter... kann mir jemand helfen?

 
mrhappiness
05-03-2004, 09:14 
 
http://www.php.net/mysql-esacpe-string könnte dein freund werden

 
xManUx
06-03-2004, 05:22 
 
und wie soll das ganze aussehen!? ich mein.. irgendwie gibts da null beispiele im web :confused:


$varnew = mysql_esacpe_string ( $varold, '\'' ); ?


könntest Du mir das Beispielintensiver erklären?! :dontknow:

falls nicht müsste ich zu ner alternative übergehen.. aber das würde ich gern vermeiden..

danke schon mal im voraus !

gruß,

manu

 
derHund
06-03-2004, 08:20 
 
hmm?

bist du dem link von mrhappiness gefolgt?
<?php
$item = "Zak's Laptop";
$escaped_item = mysql_escape_string($item);
printf("Escaped string: %s\n", $escaped_item);
?>

 
xManUx
06-03-2004, 08:41 
 
Original geschrieben von derHund
hmm?

bist du dem link von mrhappiness gefolgt?
<?php
$item = "Zak's Laptop";
$escaped_item = mysql_escape_string($item);
printf("Escaped string: %s\n", $escaped_item);
?>

Funktioniert immer noch net :\


## welches Forum?

$frage = mysql_query ( "SELECT forum FROM foren where id='$foren_id'" );
while ( $userdaten = mysql_fetch_array ( $frage ) )
{ $forumA = $userdaten["forum"]; }

$item = $forumA;
$escaped_item = mysql_escape_string($item);

$forume = $escaped_item;

$sql = "INSERT INTO Forumthreads ( thread, ip, browser, zeit, threaderoffen, forum) VALUES ( '$thema', '$ip', '$browser', '$datum', '$nickname', '$forume')";
mysql_query( $sql, $db ) or die ( mysql_error() );


## Einfügen! ##
$sql = "INSERT INTO $forume ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";
mysql_query( $sql, $db ) or die ( mysql_error() );



In das INSERT INTO in Forumthreads kommts durch aber in der zweiten nicht..

Fehlermeldungweiterhin:

You have an error in your SQL syntax near '\'s going on?! ( von, thread, ip, browser, zeit, beitrag) VALUES ( '', 'asdf', '' at line 1

:dontknow:

 
xManUx
06-03-2004, 09:51 
 
PS: könnte sprintf() abhelfen?

 
wahsaga
06-03-2004, 17:45 
 
Original geschrieben von xManUx
{ $forumA = $userdaten["forum"]; }

$item = $forumA;
$escaped_item = mysql_escape_string($item);

$forume = $escaped_item;
dass sich bei dieser variablen-hin-und-herschubserei jeder programmierer nur an den kopf packen kann, ist dir bewusst ...?

warum nicht gleich
$forume = mysql_escape_string($forumA); ?



## Einfügen! ##
$sql = "INSERT INTO $forume ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";
mysql_query( $sql, $db ) or die ( mysql_error() );


In das INSERT INTO in Forumthreads kommts durch aber in der zweiten nicht..

Fehlermeldungweiterhin:

You have an error in your SQL syntax near '\'s going on?! ( von, thread, ip, browser, zeit, beitrag) VALUES ( '', 'asdf', '' at line 1

in $forume steht bei dir also irgendwas in der art
(what)'s going on?!
drin - und das willst du bei diesem insert als den namen der tabelle, in die du einfügen willst, verwenden!?! ist ganz bestimmt nicht dein ernst ...


mach dir bitte mal klar, was bei dir in welcher variablen drinsteht!

 
xManUx
07-03-2004, 03:07 
 
in $forume steht bei dir also irgendwas in der art
(what)'s going on?!


ja



drin - und das willst du bei diesem insert als den namen der tabelle, in die du einfügen willst, verwenden!?! ist ganz bestimmt nicht dein ernst ...



why?



mach dir bitte mal klar, was bei dir in welcher variablen drinsteht!

wie ist das gemeint!? die tabelle "What's going on?!" existiert als Forum und ist auch in der MySQL-Datenbank so vorhanden...

 
wahsaga
07-03-2004, 11:26 
 
Original geschrieben von xManUx
die tabelle "What's going on?!" existiert als Forum und ist auch in der MySQL-Datenbank so vorhanden...
wer wählt denn solche tabellennamen?

sorry, aber das find' ich reichlich ... meschugge.

für'n tabellennamen nimmt man ein wort, ggf. auch zwei, mit einem _ verbunden - aber doch keine phrasen dieser art ...

bin mir auch nicht sicher, ob das mit http://www.mysql.com/doc/de/Legal_names.html konform geht.

 
Offe1
07-03-2004, 11:49 
 
die tabelle "What's going on?!" existiert als Forum und ist auch in der MySQL-Datenbank so vorhanden...

Ich dachte noch vor 6 Jahren Leerzeichen in Dateinamen seien unsinnig. Waren auf meinem Samba-Server früher ein Problem.

Offe

 
xManUx
07-03-2004, 12:57 
 
Original geschrieben von wahsaga
wer wählt denn solche tabellennamen?

sorry, aber das find' ich reichlich ... meschugge.

für'n tabellennamen nimmt man ein wort, ggf. auch zwei, mit einem _ verbunden - aber doch keine phrasen dieser art ...

bin mir auch nicht sicher, ob das mit http://www.mysql.com/doc/de/Legal_names.html konform geht.

werde ne alternative suchen... aber trotzdem danke !! mhh hätte da noch ne frage.. ( will ja net schon wieder einen neuen thread aufmachen )

und zwar hab ich in meinem forum das mit den bbcode etc..


$beitrag = preg_replace('=\[ b \ ] (.*)\[ / b \ ]=Uis','<span style="font-weight:bold;">\1</span>', $beitrag);
$beitrag = preg_replace('=\[ i \ ](.*)\[ / i \ ]=Uis','<span style="font-style:italic;">\1</span>',$beitrag);
usw.. wie würde das mit dem quoten aussehen? bekomme das einfach nicht gebacken.. hab auch schon nach etlichen beispielen gesucht aber nix gefunden :dontknow:

wie ich das mim quoten bisher hab:



$beitrag = eregi_replace ( ' \ [ quote \ ]', '<table width=100%><tr bgcolor=#FEE9CB><td>[schwarz]<font size=1><i>Quote:</i><font size=2><br><hr />', $beitrag );
$beitrag = eregi_replace ( '\[/quote\]', '<hr /></td></tr></table>[schwarz]', $beitrag );



wie würde man das richtig anstellen?!

grüßle,
manu

 
wahsaga
07-03-2004, 13:14 
 
warum machst du das nicht analog wie oben bei [ b ] und co. - wo ist deiner meinung nach der unterscheid zu [ quote ]?

$beitrag = preg_replace('=\[ quote \ ](.*)\[ / quote \ ]=Uis','<table width=100%><tr bgcolor=#FEE9CB><td><font size=1><i>Quote:</i><font size=2><br><hr />\1<hr /></td></tr></table>', $beitrag);


btw: die font-tags natürlich auch wieder schliessen, wenn du sie aufmachst (oder kamen die durch's forum?) - bzw. besser gar nicht verwenden, und stattdessen CSS für solche formatierungen anwenden.

 
Wurzel
07-03-2004, 13:15 
 
genauso wie bei [ B] [ /B]:
$start = '<table width=100%><tr bgcolor=#FEE9CB><td>[schwarz]<font size=1><i>Quote:</i><font size=2><br><hr />';
$ende = '<hr /></td></tr></table>[schwarz]';
echo preg_replace('!\[quote\](.*)\[\/quote\]!Uis', $start.'\\1'.$ende, $beitrag );tipp: von ereg(i)_replace() solltest du besser die finger lassen,
ausserdem wäre bei einer "einzelersetzung" str_replace() besser,
weil schneller als die regulären

 
xManUx
07-03-2004, 13:33 
 
Original geschrieben von wahsaga
warum machst du das nicht analog wie oben bei [ b ] und co. - wo ist deiner meinung nach der unterscheid zu [ quote ]?

$beitrag = preg_replace('=\[ quote \ ](.*)\[ / quote \ ]=Uis','<table width=100%><tr bgcolor=#FEE9CB><td><font size=1><i>Quote:</i><font size=2><br><hr />\1<hr /></td></tr></table>', $beitrag);


btw: die font-tags natürlich auch wieder schliessen, wenn du sie aufmachst (oder kamen die durch's forum?) - bzw. besser gar nicht verwenden, und stattdessen CSS für solche formatierungen anwenden.

ich wusste nicht, dass man das via \1 trennen kann... aber danke!

hmm meinst du dass man quasi <style>blablahblah</style>

<table class='blah'> benutzt?

 
xManUx
07-03-2004, 13:36 
 
Original geschrieben von Wurzel
genauso wie bei [ B] [ /B]:
$start = '<table width=100%><tr bgcolor=#FEE9CB><td>[schwarz]<font size=1><i>Quote:</i><font size=2><br><hr />';
$ende = '<hr /></td></tr></table>[schwarz]';
echo preg_replace('!\[quote\](.*)\[\/quote\]!Uis', $start.'\\1'.$ende, $beitrag );tipp: von ereg(i)_replace() solltest du besser die finger lassen,
ausserdem wäre bei einer "einzelersetzung" str_replace() besser,
weil schneller als die regulären

gut zu wissen ;) hab ich gar net gewusst! steht au irgendwo warum das so ist? :)

 
TobiaZ
07-03-2004, 13:37 
 
trennen?

 
xManUx
07-03-2004, 13:55 
 
Original geschrieben von TobiaZ
trennen?

ist doch richtig, das alles vor \1 vor dem text des [quotes] hinzugefügt wird bzw formatiert wird und alles nach \1 das nach dem text.. des hab ich mich trennen gemeint

 
TobiaZ
07-03-2004, 13:58 
 
Aso. normalerweise wird das als backreferenz bezeichnet.

wie der name schon sagt, wir da halt das zeugs was du mit dem pattern raussuchst eingefügt.

aber kommt aufs selbe raus ;)

 
xManUx
07-03-2004, 14:02 
 
Original geschrieben von TobiaZ
Aso. normalerweise wird das als backreferenz bezeichnet.

wie der name schon sagt, wir da halt das zeugs was du mit dem pattern raussuchst eingefügt.

aber kommt aufs selbe raus ;)


bin jederzeit gern bereit php sprachorientierte wörter dazu zu lernen ;D ;)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:30 Uhr.