[英]PHP and MySQL special characters error
我试图制作一个能完美工作的文章海报,直到我将特殊字符放入html形式(例如;,!
等)为止。 我用Google搜索它,发现了有关表排序规则的一些信息(默认情况下为utf8_unicode_ci
)。
连接到数据库后mysqli_set_charset($conn, 'utf8')
在头文件中添加了<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代码中没有错误,它在没有特殊字符的情况下也可以正常工作。
您需要对试图插入数据库的所有输入进行转义,否则可能会遭受sql注入攻击:
$articleText = mysql_real_escape_string($articleText);
另外,您不应该再直接使用本机sql,它已被弃用。 您应该改用准备好的语句。
如果在创建后更改了表排序规则,则并不意味着您的列排序规则确实匹配。
以下所有字符集都应匹配,以便正确插入数据:
更好的是,到处都具有相同的字符集:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.