PHP+MySQL的不能插入和修改中文的问题

时间:2022-09-20 20:11:00

环境 windows xp
     Apache2.2
     PHP 5.2.5
     数据库 网页 都使用 UTF-8编码

   最开始我用PHPMaker5,自动生成了代码来读取数据库中的数据,结果读出的数据皆为乱码,于是在网上寻找相关解决方法,后来用出现频率最高的
    mysql_query("set names utf8")
   解决了显示问题。

   之后发现中文无法插入,原有的中文记录也无法在我生成的PHP上修改。。。。
   而通过phpmyadmin操作更改和插入中文都没有任何问题,于是我认为问题应该在PHP代码上。
-----------
   为了找到问题的所在,并解决问题,我通过简单的学习,非常简单的php向mysql写入数据的程序如下

   INDEX.PHP
 
     <html>
     <head>
     <form action="insert.php" method="post">
     <title>EQA</title>
     </head>
     Firstname: <input type="text" name="firstname" />
     Lastname: <input type="text" name="lastname" />
     Age: <input type="text" name="age" />
     <input type="submit" />
     </form>
     <body>
     </body>
     </html>

    INSERT.PHP

      
     <?php
      $con = mysql_connect("192.168.3.26","root","mysql-root");
       mysql_query("SET NAMES 'utf8'"); 
      if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
      mysql_select_db("eqatest3", $con);
      $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)
      ?>
     
  -------------------------------------------

     然后输入中文,得到以下错误提示,数据库中并没有增加新的数据。。。应该是添加失败了吧
      Error: Incorrect string value: '\xB3\xF4\xBC\xB0\xB2\xF1...' for column 'FirstName' at row 1

     如果把 mysql_query("SET NAMES 'utf8'");  拿掉再试的话,数据正常添加,但是进入数据库以后,发现添加进去的是乱码。。。。


      INDEX.PHP上面声明网页编码的方法我也都试过,结果都不能令我满意,不是添加不进去,就是添加进去乱码,让我很是郁闷。


       不知道有哪位高手可以帮忙看看,我的问题到底出在哪里,有没有什么方法帮忙解决一下啊~~~感谢大家乐~~~

9 个解决方案

#1


所有编码要统一!

#2


用utf8把数据存到数据库里应该没有问题的!
是不是把数据库名子搞错了?

编码要统一!IE是几的?

#3


追踪几个地方:
建表的时候的编码
PHP文件的编码,保证入库,显示的编码相同,最好保持建表的编码也相同

#4


引用 2 楼 phpBoy005 的回复:
用utf8把数据存到数据库里应该没有问题的! 
是不是把数据库名子搞错了? 

编码要统一!IE是几的?

添加英文就没问题,所以数据库名字应该没错
我至少可以保证数据库,和php文件中的语句设置是统一的编码啊
IE 7.0 

------------

引用 3 楼 hover_online 的回复:
追踪几个地方: 
建表的时候的编码 
PHP文件的编码,保证入库,显示的编码相同,最好保持建表的编码也相同

Windows下如何察看.php文件的编码?我数据库是用access做好然后用Access2MySQL Pro 5倒过去的,那里的设置就是utf8,用phpmyadmin进去看也是utf8,所以数据库应该是没问题的,我的php语句好像也没什么问题吧?
难不成我的文件有问题?

#5


引用 4 楼 jacking26 的回复:
Windows下如何察看.php文件的编码?我数据库是用access做好然后用Access2MySQL Pro 5倒过去的,那里的设置就是utf8,用phpmyadmin进去看也是utf8,所以数据库应该是没问题的,我的php语句好像也没什么问题吧?
难不成我的文件有问题?


1.lz可以用PDT打开php文件。当然,如果lz用的IDE支持多种编码,应该可以看到php文件的编码
2.英文的处理没问题的话,程序本身应该不会有什么大问题。
3.文件编码的可能性最大。

#6


是不是因为网页的编码?

网页的编码方式是UTF8么?

如果不是,改下编码,或是:

假设网页编码是GB2312;

用 

iconv("UTF-8","GB2312","$firstname") 转换

再存入数据库试试

#7


专业维护jsp,php网站

#8


此问题已经解决

统一编码的问题
1.html编码,声明中utf-8
2.php 设置 ,在php.ini中,可以在网上找到修改方法
3.数据库设置


小弟这次一直以为1和3搞定就行了
结果发现PHP设置也很重要。。。。
多谢各位解答

#9


经验啊,我也要加强学习了

#1


所有编码要统一!

#2


用utf8把数据存到数据库里应该没有问题的!
是不是把数据库名子搞错了?

编码要统一!IE是几的?

#3


追踪几个地方:
建表的时候的编码
PHP文件的编码,保证入库,显示的编码相同,最好保持建表的编码也相同

#4


引用 2 楼 phpBoy005 的回复:
用utf8把数据存到数据库里应该没有问题的! 
是不是把数据库名子搞错了? 

编码要统一!IE是几的?

添加英文就没问题,所以数据库名字应该没错
我至少可以保证数据库,和php文件中的语句设置是统一的编码啊
IE 7.0 

------------

引用 3 楼 hover_online 的回复:
追踪几个地方: 
建表的时候的编码 
PHP文件的编码,保证入库,显示的编码相同,最好保持建表的编码也相同

Windows下如何察看.php文件的编码?我数据库是用access做好然后用Access2MySQL Pro 5倒过去的,那里的设置就是utf8,用phpmyadmin进去看也是utf8,所以数据库应该是没问题的,我的php语句好像也没什么问题吧?
难不成我的文件有问题?

#5


引用 4 楼 jacking26 的回复:
Windows下如何察看.php文件的编码?我数据库是用access做好然后用Access2MySQL Pro 5倒过去的,那里的设置就是utf8,用phpmyadmin进去看也是utf8,所以数据库应该是没问题的,我的php语句好像也没什么问题吧?
难不成我的文件有问题?


1.lz可以用PDT打开php文件。当然,如果lz用的IDE支持多种编码,应该可以看到php文件的编码
2.英文的处理没问题的话,程序本身应该不会有什么大问题。
3.文件编码的可能性最大。

#6


是不是因为网页的编码?

网页的编码方式是UTF8么?

如果不是,改下编码,或是:

假设网页编码是GB2312;

用 

iconv("UTF-8","GB2312","$firstname") 转换

再存入数据库试试

#7


专业维护jsp,php网站

#8


此问题已经解决

统一编码的问题
1.html编码,声明中utf-8
2.php 设置 ,在php.ini中,可以在网上找到修改方法
3.数据库设置


小弟这次一直以为1和3搞定就行了
结果发现PHP设置也很重要。。。。
多谢各位解答

#9


经验啊,我也要加强学习了