繁体   English   中英

PHP和MySQL特殊字符错误

[英]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,它已被弃用。 您应该改用准备好的语句。

如果在创建后更改了表排序规则,则并不意味着您的列排序规则确实匹配。

以下所有字符集都应匹配,以便正确插入数据:

  • 列字符集排序规则
  • 连接字符集

更好的是,到处都具有相同的字符集:

  • defaut字符集
  • 数据库字符集
  • 表字符集
  • 列字符集
  • 连接字符集

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM