我正在尝试制作一个完美无缺的文章海报,直到我在html表单中添加特殊字符(如;,!
等)。我用Google搜索并找到了关于表格排序的信息(默认为utf8_unicode_ci
)。
连接到数据库后,我在头文件<meta charset="utf-8">
中有mysqli_set_charset($conn, 'utf8')
。该表单还具有accept-charset="utf-8"
属性。
以下是发送表单后发生的事情:
if(isset($_POST['sendForm']))
{
$articleTitle = $_POST['title'];
$articleText = $_POST['text'];
$name = $_SESSION['name'];
$currentDateMySQL = date("Y.m.d");
$sql = "INSERT INTO articles (title, text, owner, date_added) VALUES ('$articleTitle', '$articleText', '$name', '$currentDateMySQL')";
$result = mysqli_query($conn, $sql);
if($result === false)
{
$color = "red";
$infoText = "Could not insert your information into the database. Error number: <b>" . mysqli_errno($conn) . "</b>. :( Try again.";
}
else
{
$color = "green";
$infoText = "Succesfully writen the article into the database. :)";
}
}
此外,给定的错误编号为1064
。 SQL代码中没有错误,没有特殊字符就可以正常工作。
答案 0 :(得分:2)
您需要将尝试插入数据库的每个输入都转义,否则您将面临SQL注入攻击的风险:
$articleText = mysql_real_escape_string($articleText);
此外,您不应再直接使用本机sql,不推荐使用它。你应该使用预备语句。
答案 1 :(得分:1)
如果您在创建后更改了表格排序规则,则表示您的列排序规则不匹配。
以下所有字符集都应匹配,以便正确插入数据:
更好的是,到处都有相同的字符集: