我想将一个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);
答案 0 :(得分:2)
你应该在mysql_connect
之后运行以下查询mysqli_query($con, "SET NAMES 'utf8'");
你应该至少在$ fname和$ lname使用mysqli_real_escape_string,如果你的代码中还没有这样做的话