php中执行包含中文字符的建表语句失败
程序员文章站
2024-02-10 22:59:10
...
$conn = mysql_connect("localhost","root","");
if($conn){
mysql_select_db("test",$conn);
$sql = "create table user
(
id int(5) not null auto_increment primary key,
name char(10) not null default '',
password char(12) not null default '',
age int(3) not null default 0,
sex char(10) not null default '男',
mail char(50) not null default '',
degree char(10) not null default ''
);";
$do = mysql_query($sql,$conn);
if($do){
echo "操作成功";
}
else{
echo "操作失败";
}
}else{
echo "连接服务器出错";
}
执行以上代码,返回“操作失败”。自己测试了一下,发现是中文字符的问题,也就是sex字段默认值为‘男’这里出了问题。但是如果把$sql里的语句单独在cmd里运行的话,可以成功的创建表。
不知道是怎么回事,望高手解答。
if($conn){
mysql_select_db("test",$conn);
$sql = "create table user
(
id int(5) not null auto_increment primary key,
name char(10) not null default '',
password char(12) not null default '',
age int(3) not null default 0,
sex char(10) not null default '男',
mail char(50) not null default '',
degree char(10) not null default ''
);";
$do = mysql_query($sql,$conn);
if($do){
echo "操作成功";
}
else{
echo "操作失败";
}
}else{
echo "连接服务器出错";
}
执行以上代码,返回“操作失败”。自己测试了一下,发现是中文字符的问题,也就是sex字段默认值为‘男’这里出了问题。但是如果把$sql里的语句单独在cmd里运行的话,可以成功的创建表。
不知道是怎么回事,望高手解答。
回复讨论(解决方案)
字符集问题
连接数据库后,先执行
mysql_query('set names ???'); // ??? 为你的程序文件的编码(如果是 utf-8 的话应写作 utf8)
建表语句后面加上 DEFAULT CHARSET=gbk
上一篇: 输出多个Json对象解决方法
下一篇: 配置优化让你的PHP引擎全速运转