php插入中文到数据库 php引入数据库-成都快上网建站

php插入中文到数据库 php引入数据库

php将汉字写入数据库问题

你建立的表字段的编码是什么编码呢?mysql的编码分为两种,一种是客户端编码,这个可以通过set names GBK(utf8);来改变;这句话的意思是告诉mysql服务器,你的客户端使用的是什么编码。另一种是数据在库中存储时使用的编码,这个编码可以在安装mysql建立数据库,建立表的时候选择,以建表时的选择为最后标准,若果没选择,默认继承安装时的选择。你说的插入成功却是空行的原因,可能是因为安装时选择的编码里面,对汉字的编码支持的太少,因此出现这样的情况,建议:show create table table_name;查看下建表语句中的字符集。最好修改成utf8。这样适应能力强一些!

成都创新互联不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的成都做网站、成都网站设计质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式成都全网营销需求,让再小的品牌网站制作也能产生价值!

php不能往mysql数据库添加汉字,只能添加字母和数字

php+mysql数据时我们必须保证提交到数据库的编码与mysql编码是一致的这样才可以保存中文不出现问号乱码问题,下面我先整理两个让mysql与页面保证编码一致的方法。

解决中文插入数据库乱码的方法:

直接把中文转变成utf-8格式,大多是这个问题导致的。

代码如下复制代码

$str

=

iconv('gbk','utf-8',$str);

如果还不行检查网页编码是否正确:

代码如下复制代码

?php

header("Content-Type:text/html;charset=utf-8");

?

建表:

代码如下复制代码

Create

TABLE

`net_city`

(

`cityid`

smallint(4)

NOT

NULL

auto_increment,

`cityname`

varchar(80)

NOT

NULL

default

'',

`provinceid`

smallint(2)

NOT

NULL

default

'0',

`inarea`

varchar(5000)

NOT

NULL

default

'',

`outarea`

varchar(5000)

NOT

NULL

default

'',

`tel`

varchar(400)

NOT

NULL

default

'',

PRIMARY

KEY

(`cityid`)

)

ENGINE=MyISAM

DEFAULT

CHARSET=utf8;

PHP里的代码:

$conn=mysql_connect("localhost",

"用户名",

"密码");

mysql_query("set

names

'utf8'",$conn);

mysql_select_db("

数据名",$conn);

$exec="insert

into

net_city

(cityname,inarea,outarea,tel)

values

('".$link_cityname."','".$link_inarea."','".$link_outarea."','".$link_tel."')";

$result=mysql_query($exec,$conn);

if($result){

echo

"1";

}else{

echo

"0";

}

mysql_close($conn);

后来我试了试全部都用成gbk的,也是可以的~

在查询数据时我们直接使用mysql_query()来设置

mysql_query("SET

NAMES

GBK");

//GBK处为编码设置

例子

下面是

"insert.php"

页面的代码:

代码如下复制代码

?php$con

=

mysql_connect("localhost","peter","abc123");

if

(!$con)

{

die('Could

not

connect:

'

.

mysql_error());

}

mysql_select_db("my_db",

$con);

mysql_query("SET

NAMES

GBK");

//GBK处为编码设置

$sql="INSERT

INTO

person

(FirstName,

LastName,

Age)VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if

(!mysql_query($sql,$con))

{

die('Error:

'

.

mysql_error());

}

echo

"1

record

added";

mysql_close($con)

?

PHP使用utf8插入中文数据到MySQL中文显示会乱码怎么办?

数据库使用utf8编码,需要在操作的过程中统一全部编码。

1.数据库默认编码

CREATE DATABASE `test` DEFAULT CHARACTER SET 'utf8';

2.表默认编码

CREATE TABLE `tablea`(

`id` INT NOT NULL AUTO_INCREMENT,

`title` VARCHAR(100) NULL,

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.字段默认编码

默认情况下,字段的编码同表的编码,但是如果修改了表的编码,字段编码不会同步修改,需要手动修改

这里修改编码测试我将utf8 改为 gb2312  ,仅用于观察修改后的情况(实际使用中可能是将gbk修改为utf8)

ALTER TABLE `test`.`tablea` CHARACTER SET = gb2312 ;

-- 修改表编码后,查看建表语句

show create table `tablea`;

-- 可以看到输出的建表语句中字段单独设置了编码

CREATE TABLE `tablea`(

`id` INT NOT NULL AUTO_INCREMENT,

`title` VARCHAR(100) CHARACTER SET utf8 NULL,

)ENGINE=InnoDB DEFAULT CHARSET=gb2312;

-- 需要手动修改字段编码

ALTER TABLE `tablea` 

CHANGE COLUMN `title` `title` VARCHAR(100) CHARACTER SET 'gb2312' NULL DEFAULT NULL ;

4.当前数据库连接的编码

连接数时设置编码

// PDO 连接

$db = new PDO('mysql:host=myhost;dbname=test', 'login', 'password', 

array(PDO::MYSQL_ATTR_INIT_COMMAND = 'SET NAMES \'UTF8\'')

); 

// mysqli连接

$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "test");

mysqli_query($link,"SET NAMES 'utf8';");

通过以上几步操作,基本可以保证数据库使用过程中不会出现乱码


文章名称:php插入中文到数据库 php引入数据库
网站URL:http://kswjz.com/article/dogopjp.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流