I have a problem. Im sitting on that problems since hours and I cant find any solution.
I changed Database Character Set and Collation to UTF8 - not working.
When I insert normal letters its working but if one umlaut is in the input, the input is empty in database.
Code:
if(isset($_POST['submitSecurityQuestions'])){
$securityQuestion1 = $_POST['securityQuestion1'];
$securityQuestion2 = $_POST['securityQuestion2'];
$securityAnswer1 = $_POST['securityAnswer1']);
$securityAnswer2 = $_POST['securityAnswer2'];
if(empty($securityAnswer1) || empty($securityAnswer2))
{
$msg = "Du hast nicht alles ausgefüllt!";
} else {
if($securityAnswer1 < '4' || $securityAnswer2 < '4') {
$msg = "Du musst mindestens 4 Zeichen eingeben!";
} else {
mysql_query("UPDATE users SET securityQuestions = '1' WHERE id = '".$user->id."' LIMIT 1") or die(mysql_error());
mysql_query("INSERT INTO `users_securityquestions` (`securityQuestion1`, `securityQuestion2`, `securityAnswer1`, `securityAnswer2`, `createdTime`, `createdIP`, `createdUserAgent`, `active`, `userID`) VALUES ('".$securityQuestion1."', '".$securityQuestion2."', '".$securityAnswer1."', '".$securityAnswer2."', '".$time."', '".$ip."', '".$user_agent."', '1', '".$user->id."');") or die(mysql_error());
header('location:'.$_SERVER['PHP_SELF']);
}
} }
I also tryed that Filter:
function FilterText($str) {
if(get_magic_quotes_gpc()){ $str = stripslashes($str); }
$str = preg_replace(array('/\x{0001}/u','/\x{0002}/u','/\x{0003}/u','/\x{0005}/u','/\x{0009}/u'),' ',$str);
$str = mysql_real_escape_string($str);
return $str;
}
How can I insert Umlauts like ä or ü into database? I'm using MySQL.
Thanks!
Try running this query before your inserts:
SET NAMES utf8;
This will tell the MySQL server that the incoming data is also utf8 encoded.
Put 'SET NAMES utf8' Before your manipulating queries. Also, be sure your file encoding is utf8
if(isset($_POST['submitSecurityQuestions'])){
$securityQuestion1 = $_POST['securityQuestion1'];
$securityQuestion2 = $_POST['securityQuestion2'];
$securityAnswer1 = $_POST['securityAnswer1']);
$securityAnswer2 = $_POST['securityAnswer2'];
if(empty($securityAnswer1) || empty($securityAnswer2))
{
$msg = "Du hast nicht alles ausgefüllt!";
} else {
if($securityAnswer1 < '4' || $securityAnswer2 < '4') {
$msg = "Du musst mindestens 4 Zeichen eingeben!";
} else {
mysql_query('SET NAMES utf8');
mysql_query("UPDATE users SET securityQuestions = '1' WHERE id = '".$user->id."' LIMIT 1") or die(mysql_error());
mysql_query("INSERT INTO `users_securityquestions` (`securityQuestion1`, `securityQuestion2`, `securityAnswer1`, `securityAnswer2`, `createdTime`, `createdIP`, `createdUserAgent`, `active`, `userID`) VALUES ('".$securityQuestion1."', '".$securityQuestion2."', '".$securityAnswer1."', '".$securityAnswer2."', '".$time."', '".$ip."', '".$user_agent."', '1', '".$user->id."');") or die(mysql_error());
header('location:'.$_SERVER['PHP_SELF']);
}
} }
Try for insert & update
$securityQuestion1 = utf8_encode($_POST['securityQuestion1']);
$securityQuestion2 = utf8_encode($_POST['securityQuestion2']);
$securityAnswer1 = utf8_encode($_POST['securityAnswer1']);
$securityAnswer2 = utf8_encode($_POST['securityAnswer2']);
When fetching data from database
Use utf8_decode() function for each data..