I have a problem with my mysql insert statement.
I have a form which is submitting utf-8 characters correctly to the insert file (i’ve checked the POST vars).
Now when i look after the INSERT in my DB, there are no umlauts, but question marks.
The error must be right before the insert statement.
If i output (manually entered) content from my DB, umlauts are correctly displayed.
// echo $_POST["title"];
// outputs correctly with special chars: "Some german title with umlaute ä ö ü"
mysql_query("INSERT INTO videos (youtube_hash, title, description, category, created) VALUES ('".mysql_real_escape_string($_POST["hash"])."', '".mysql_real_escape_string($_POST["title"])."', '".mysql_real_escape_string($_POST["desc"])."', '".mysql_real_escape_string($_POST["cat"])."', '".time()."')") or die(mysql_error());
// database entry looks like this: "Some german title with umlaute ? ? ?"
I hope anyone can help me out in this 🙂
EDIT:
htmlentities() did the job!
Using HTML entities isn’t the nicest solution to your problem. Ideally you should be storing data in the database and only using
htmlentities()for display purposes. What if you ever wanted to display/export this data in some other way than in HTML.I’d recommend reading up on character set handling in PHP/MySQL. Here’s an article I wrote recently: How to Avoid Character Encoding Problems in PHP
Post up again if you’re still having problems.