Text wird nicht in DB eingetragen wenn ' dabei ist

Vitalis

Erfahrenes Mitglied
Hallo zusammen!

Ein Kumpel von mir hat ein Problem und ich versteh nicht woran's liegt. Es soll ganz normal ein Text über eine Textarea in eine Datenbank eingetragen werden. Aber immer wenn ein ' im Text vorkommt, gibt es keinen Fehler, aber es wird auch kein neuer Datensatz erstellt und nix eingetragen.

So sieht der Code aus:

PHP:
$table_name = "tablename";
$date = date("F j, Y");
$time = date("H:i:s");
$entry = str_replace("\n","<br>",$entry);

$db_server = "dbserver";
$db_name = "dbname";
$db_user = "dbuser";
$db_password = "dbpass";

$db = @MYSQL_PCONNECT($db_server, $db_user, $db_password)
	or die ("Could not connect to MYSQL server!");
	@mysql_select_db ($db_name, $db)
	or die ("Could not connect to database!");

$insert = mysql_query("INSERT INTO $table_name (ID, date, time, title, entry) 
VALUES ('', '$date', '$time', '$title', '$entry')");

Weiß jemand woran das liegen könnte? Ich hoffe es wurde hier nicht schon behandelt, wußte nicht wonach ich suchen soll..
 
ich würd mal vermuten, das liegt daran, dass der apostroph (') vom datenbanksystem als anführungszeichen interpretiert wird. aber ganz sicher bin ich nicht. :rolleyes:

und ausserdem: wenn das feld ID der primärschlüssel der tabelle ist, sollte da auch was eingetragen werden, sonst sollte sich das dbms weigern, die abfrage auszuführen.
 
Das liegt daran das ' eine spezielle funktion haben bei php bzw in sql

du must die ' vorher verstecken

$neutext = addslahes($altertext);

das ist die funktion dazu

bei der gelegenheit umwandeln von
\n auf <br> macht die function nl2br
 
@at0m1c

dat kommt daher das der sql-query ein fehler macht wenn mitten drin ein ' kommt
(wo es nicht erwartet wird)
und bei fehlern macht sql keinen eintrag ..
wenn mysql_querq("query...") or die(mysql_error()); gemacht werden würde gäbe es prompt eine fehlermeldung im browser...
 
hmm,

der steigt aus weil der Query dann ungefähr so aussiht =>


INSERT INTO $table_name (ID, date, time, title, entry)
VALUES ('34', '23.04.5678', '11342345', 'lala', 'duddellduldd'sadasdsadda')
udn dann hast du eben den Teil sadasdsadda' der einfach nicht interpretierbar ist und darum wird garnichts reingeschrieben in die DB !
einfach ein addslashes mit einbauen wie gesagt wurde und die sache hat sich, würd ich bei $title übrigens auch verwenden !
 
Zurück