PHP+mysql中文只能显示问号的问题

2013-07-05 19:37:35 +08:00
 Plumes
RT,中文只能显示问号,到网上搜了一下,答案都是各种设置字符集,但是设置之后依然不奏效,又到网上查了查,发现一篇文章提到使用 mysql_query("set names utf8"); 时不能使用 mysqli_ 的函数,只能使用 mysql_ 的函数,改了之后发现果然好了,但是如果非要使用 mysqli_该怎么办呢?
6146 次点击
所在节点    PHP
18 条回复
haiyang416
2013-07-05 19:41:56 +08:00
这语句和crud 语句没什么区别,直接query就行。
Plumes
2013-07-05 19:47:25 +08:00
好吧,我sb了,(〒ˍ〒),只要使用 mysqli_query("set names utf8"); 就好了
vibbow
2013-07-06 03:57:10 +08:00
mysqli,推荐使用以下方法设置连接字符集
mysqli::set_charset('utf8');

PHP官方文档:
http://www.php.net/manual/en/mysqli.set-charset.php
jevonszmx
2013-07-10 22:44:57 +08:00
推荐用pdo啊~~
vibbow
2013-07-11 00:06:42 +08:00
@jevonszmx PDO的意义是什么?一直没搞懂。
horsley
2013-07-11 01:15:45 +08:00
@vibbow 统一的数据访问接口,后端搭配的数据库可以换各种数据库
vibbow
2013-07-11 01:39:42 +08:00
@horsley 谁无聊没事换数据库玩啊,尤其是各个数据库语法还可能不同的情况下。
jevonszmx
2013-07-15 17:34:19 +08:00
@vibbow
本身公司就存在多个数据库呢?
保持统一、抽象的数据访问接口,比不同的数据库不同的语句好吧?听说php官方都准备直接用pdo,不太更新php_mysql之类的组件了
性能暂时没感受到,就是有次负载过高时,pdo较好的稳定性(pdo的项目反映迟钝,mysql直连的挂了)

@horsley
bingo~
vibbow
2013-07-15 18:06:14 +08:00
@jevonszmx 在有多个不同类型数据库的情况下,为了保持统一,抽象的数据访问接口,你肯定还得对PDO再封装一遍(要不然还是会遇到LIMIT 10, TOP 10之类的语法不一致问题),这时PDO的意义等于没有意义了。
msg7086
2013-07-15 18:36:32 +08:00
@vibbow 这么做下去就会做成ORM了。所以一般情况下还不如直接固定在一个数据库上来得好,除非你真要考虑很特殊的情况……
vibbow
2013-07-15 18:47:48 +08:00
@msg7086 是啊,所以一直没搞懂PDO存在的意义是什么?
jevonszmx
2013-07-16 15:15:22 +08:00
@vibbow
就和框架存在的意义一样啊,框架写的代码难道和直接写有区别吗?直接写一堆文件也能实现功能的啊。可是框架(普遍存在db操作封装,复杂的用orm,封装了太多操作,其实性能很差。。。汗一个),还不就是为了满足快速开发、不用面对不同底层实现嘛,这样菜鸟程序猿也不需要关注不同的数据库差异(虽然我也很反对,因为用了框架后原理都忘记了),用类的方式就完全可以无缝操作不同数据库了。
php关于框架是否有意义,orm是否有意义,这个争了很多年了。。。
vibbow
2013-07-16 15:57:11 +08:00
@jevonszmx 框架是可以满足快速开发,可是PDO没有啊...
jevonszmx
2013-07-16 17:27:36 +08:00
@vibbow
pdo也是封装了db操作方法啊:
http://www.php.net/manual/zh/intro.pdo.php
PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。

当然,针对一些数据库的sql语句差异(top神马的。。。)还是需要做处理的,这个没法避免
vibbow
2013-07-16 19:04:05 +08:00
@jevonszmx 所以为了跨数据库,还得二次封装...
不跨数据库的话,用PDO和用mysqli没实际意义上的区别啊...
jevonszmx
2013-07-16 22:59:04 +08:00
@vibbow
基本上现在很少不用框架来开发程序了吧。。。写原生语句很累的。
pdo预编译也是卖点之一啊~~虽然平时参数还是自己处理XD
vibbow
2013-07-16 23:00:43 +08:00
@jevonszmx 就我个人来言:能不用框架就不用框架,除了少数的函数轻度封装一下(比如说curl),其他的全部自己处理
jevonszmx
2013-07-17 08:58:00 +08:00
@vibbow
额,个人,哥哥,公司开发人员水平不一,不搞个框架限制下,你就惨了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/74887

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX