我的问题是:我有一个所有字段均为VARCHAR的数据库。有些代表html代码。此代码包含char,⬛︎,◔,➜,★,✦等字符。这些字符未在HTML上编码。他们就像你在这里看到他们一样。

该数据库上的其他字段是URL。

我知道我必须转义这些字符以防止sql注入,还必须对其进行编码以允许在数据库中插入。

htmlspecialchars将不会处理这些符号,因为它们未在源上进行编码。 mysql_escape_string仅转义小节和双引号等。

我该如何真正对其进行编码并在PHP中转义,以便可以将这些数据插入数据库中以及如何读回它们?

谢谢。

最佳答案

使用parameterized queries防止SQL注入。并在html中显示数据时使用htmlspecialchars()函数。使用我喜欢的PDO:

$db = new PDO($dsn, $db_user, $db_password);
$query = 'INSERT INTO table (data1, data2) VALUES (:data1, :data2)';
$statement = $db->prepare($query);
$statement->bindValue(':data1',$data1);
$statement->bindValue(':data2',$data2)
$statement->execute();

10-08 03:11