Home » Php » php – MySQL foreign characters after inserting data

php – MySQL foreign characters after inserting data

Posted by: admin February 25, 2020 Leave a comment

Questions:

I’m using php to insert data from inputs into MySQL database. The problem is, it shows up in phpmyadmin as foreign characters. I’ve already set my database to utf8_hungarian_ci as you can see here:
https://i.gyazo.com/aeca91e44e8f1808bad09584d8e938d7.png

I’m using utf 8 charset in my form:

<?php
header('Content-type: text/html; charset=utf-8');
?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Records Form</title>
</head>
<body>
<form action="insert.php" method="post">
<p>
<label for="firstName">Név:</label>
<input type="text" name="name" id="firstName">
</p>
<p>
<label for="lastName">Foglalkozás:</label>
<input type="text" name="job" id="lastName">
</p>
<p>
<label for="emailAddress">Email:</label>
<input type="text" name="email" id="emailAddress">
</p>
<input type="submit" value="Add Records">
</form>
</body>
</html>

and I’m also using mysqli_set_charset in my sql connector:

<?php
$link = mysqli_connect("localhost", "root", "", "reg");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security
$name = mysqli_real_escape_string($link, $_REQUEST['name']);
$job = mysqli_real_escape_string($link, $_REQUEST['job']);
$email = mysqli_real_escape_string($link, $_REQUEST['email']);

// attempt insert query execution
$sql = "INSERT INTO cards (name, job, email) VALUES ('$name', '$job', '$email')";
if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

// close connection
mysqli_set_charset($link, "utf8");
mysqli_close($link);
?>

but I still get this result on my page with characters like ő, ú, ű, á, etc.
https://gyazo.com/ab3d40574f0c2162aa6b529651e413b3

Edit: I’m also using this header on my index page:

header('Content-type: text/html; charset=utf-8');
How to&Answers: