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