How does the use of mysqli_real_escape_string() affect the storage of data in a MySQL database and what are the implications for data retrieval?

Using mysqli_real_escape_string() helps prevent SQL injection attacks by escaping special characters in a string before sending it to the database. This function ensures that the data is stored safely in the MySQL database without causing any unintended SQL syntax errors. When retrieving data from the database, it is important to remember to use mysqli_real_escape_string() again to ensure that the data is properly sanitized before being displayed to the user.

// Establish a connection to the MySQL database
$connection = mysqli_connect("localhost", "username", "password", "database");

// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit();
}

// Escape user input for security
$name = mysqli_real_escape_string($connection, $_POST['name']);
$email = mysqli_real_escape_string($connection, $_POST['email']);

// Insert data into database
$sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
if (mysqli_query($connection, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}

// Close connection
mysqli_close($connection);