【发布时间】:2021-07-06 23:32:18
【问题描述】:
我想在 oracle sql 中存储特殊字符,如 á、é、ő 等。我该怎么做?每个角色都变成了??当我选择它们时。从未使用过 oracle sql,这对我来说真的很痛苦。
PHP 代码:
$id = $_POST['id'];
$comment = $_POST['comment-content'];
$username = $_SESSION['username'];
$q = "INSERT INTO hozzaszolasok (username, image_id, content, date_added) VALUES ('$username',$id,'$comment',(SELECT sysdate FROM dual))";
$s = oci_parse($c, $q);
oci_execute($s);
oci_free_statement($s);
oci_close($c);
echo '<script>window.location.href = "comments.php?id=' . $id . '";</script>';
【问题讨论】:
-
可能需要在连接
$c上设置字符集。您看起来对使用此代码的 SQL 注入持开放态度。变量/用户输入不应在 SQL 中。 -
不要使用这样的插入查询。您可以接受 sql 注入。使用参数
-
为什么是
(SELECT sysdate FROM dual)?只需使用sysdate -
字符变成 ??或者您的客户端和数据库之间的字符集可能存在差异。检查数据库字符集是否支持多字节字符。 AL32UTF8 就是这样一种字符集。
-
(1) Pass the values as bind variables, (2) 检查数据库实际上没有正确存储它们,不仅它们存储正确,而且当您查看时用户界面没有显示它们正确; (3) 如果您已经完成了 1 和 2,但仍然无法正常工作,请尝试使用
NVARCHAR2数据类型而不是VARCHAR2。
标签: php sql oracle encoding special-characters