Aktualizacja PDO nie wydaje się przechowywać cytatów?

Zaczynam od metod PDO, a teraz utknąłem w małym pytaniu. Jeśli utworzę formularz do wstawienia imienia i nazwiska do bazy danych, mogę wstawić wszystkie typy znaków specjalnych z poniższym kodem:

try {
    $db = new PDO('mysql:dbhost=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
    $db -> exec("SET CHARACTER SET utf8");
} catch(PDOException $e) {
    echo $e->getMessage();
}
$query = $db->prepare("INSERT INTO users(fname, lname) VALUES(:fname, :lname)");
$insert_array = array(
    ":fname" => $fname,
    ":lname" => $lname
);
$query->execute($insert_array);
$db = NULL;

Mogę wstawić":;,-!"#¤%&&(%)?{][]}£$€{{{$@@_--" bez żadnych problemów, nawet wstawić wtrysk SQL. Ale kiedy próbuję zaktualizować bazę danych podobnym kodem, akceptuje ona wszystkie typy znaków specjalnych, z wyjątkiem cytatów. Dlaczego? Kod, którego używam do aktualizacji, to:

try {
    $db = new PDO('mysql:dbhost=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
    $db -> exec("SET CHARACTER SET utf8");
} catch(PDOException $e) {
    echo $e->getMessage();
}
$query = $db->prepare("UPDATE users SET fname=:fname, lname=:lname WHERE userid=:userid");
$update_array = array(
    ":fname" => $fname,
    ":lname" => $lname,
    ":userid" => $_GET['userid']
);
$query->execute($update_array);
$db = NULL;

Jestem wdzięczny za wszelką pomoc, jaką mogę uzyskać.

- = ROZWIĄZANIE = -

Musiałem użyćhtmlspecialchars() „dekodować” ciąg. Lubię to:

<form action="" method="post">
    First name<br><input type="text" name="fname" value="'.htmlspecialchars($user['fname']).'">
    Last name: <br><input type="text" name="lname" value="'.htmlspecialchars($user['lname']).'">
    <input type="submit">
</form>

Teraz wszystkie rodzaje znaków specjalnych działają doskonale. Dziękujemy za pomoc wszystkim, naprawdę to doceniamy! :RE

questionAnswers(1)

yourAnswerToTheQuestion