MYSQL / PHP的UTF-8问题

时间:2014-05-11 07:48:40

标签: php mysql sql utf-8

我想将一个UTF-8字符串发送到Mysql DB,但是Mysql不支持UTF8。

我错了什么?

这是我的代码:

这是html / php页面:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<form action="" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
  <input type="text" name="name" />
  <input type="submit" value="submit">
</form>
</body>

这是第一个创建sql表的php函数:

    function createFolowerTable()
{
    $con=mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD,DATABASE_NAME);
    mysqli_set_charset('utf8',$con);

    //Type: img/file/doc/audio/video
    $sql="CREATE TABLE IF NOT EXISTS `follow` (
         `Followid` int(10) NOT NULL AUTO_INCREMENT,
         `fname` varchar(20) NOT NULL,
         `lname` varchar(20) NOT NULL,
          PRIMARY KEY (`Followid`)) 
          ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=22 ;";

    if (!mysqli_query($con,$sql)) {
        echo "Error creating table: " . mysqli_error($con);
    }
    mysqli_close($con);
}

这个函数将数据添加到mysql:

 $con=mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD,DATABASE_NAME);

 $query_insert_user = "INSERT INTO `members` ( `fname`,  `lname`)
                                  VALUES ( '$fname', '$lname')";


  $result_insert_user = mysqli_query($con, $query_insert_user);
  if (!$result_insert_user) {
      $_state=false;
  }
  mysqli_close($con);

1 个答案:

答案 0 :(得分:2)

你应该在mysql_connect

之后运行以下查询
mysqli_query($con, "SET NAMES 'utf8'");

你应该至少在$ fname和$ lname使用mysqli_real_escape_string,如果你的代码中还没有这样做的话