星期一进行面试结束后,意味着我的考研日子也结束了,以及我的2013。在好好总结之后还不能停止学习,心想着要把算法继续学下去,还有Linux。不过呢,始终都要记住尼采老师的这句当头棒喝:“不加选择的知识冲动,正如不分对象的性冲动,都是下流的标志。”嗯嗯,我们继续。

一.读取数据库乱码问题

这个问题在开始学习连接数据库时就出现过,不过当时的解决方法忘记了。其结果就是在百度、谷歌上纠结了1天。纠结着从数据库的编码修改到网页文件的编码修改,以及mysql的my.ini文件参数修改,都没有解决问题。页面中文显示"??"就证明了问题不是出现在数据库(如果是,数据库的表项就应该是乱码),也不是网页页面的编码(如果是,页面会出现混乱的字符而不是??),而问题是出在php连接数据库时没有设置数据库输出的格式。最后解决问题参考的是这篇博客《解决PHP写入、读取MYSQL数据库时中文乱码问题》,谢谢Jankerli。问题的关键就在mysqli类。这个类是扩展了php操作mysql的功能。所以网络上通行的在连接数据库后的mysql_query(“set names utf8″)就起不了作用了。而是写这句话。

 $result = new mysqli('localhost', 'username’, 'password', 'databasename');
$result->set_charset('utf8');

至于MySQL与mysqli的比较,各有优缺点吧。请记住这句话,“如果你是使用MySQL4.1.3或更新的服务端版本,强烈建议你使用mysqli 扩展替代它。”。

二.fetch

在做网站时用到了一系列含有fetch的函数,现总结总结。

1.fetch_object()

 $result = $conn->query($query);

 if($result->num_rows > 0){
$customer = $result->fetch_object();
$customerid = $coustomer->$customerid;
}

解释一下该代码。首先,使用MYSQLi类的方法,执行查询语句,返回一个mysqli_result类的实例($result)。在判断结果有效后,使用$result对象的方法fetch_object()返回记录集中的当前一行记录作为一个对象。最后在根据需要进行传值。

2.fetch_assoc()

 $result = @$conn->query($query);
if (!$result) {
return false;
} $result = @$result->fetch_assoc();
return $result;

同样也是一个mysqli_result类的实例($result),但取得的是一个关联数组(associative array)。那么什么是关联数组呢?这是一种数据结构。与索引数组相比,关联数组的每个I键(key)都关联一个值(value)。通过关联数组,我们可以把values关联到keys。具体就是在定义数组时,使用逗号分隔的键(key)=> 值(value)对来进行映射。所以使用这里的$result时,不再用$result->$id,而是$result[‘id’]。这就是他俩的区别。

3.fetch_row()

 $num_cats = @$result->num_rows;
f($num_cats == 0){
return false;
}
$row = $result->fetch_row();
if(isset($row)){
return $row->catname;
}else{
return null;
}

在检查完查询语句结果有效后,取得一个枚举数组($row)。至于与关联数组除了概念上的区别,我就知道foreach循环可以遍历关联数组; 而for循环只能遍历枚举数组, 不能遍历关联数组。其他的还有待学习。

最后提一句,$result->fetch_object()等价于mysqli_fetch_object()。前者是面向对象风格,后者是过程化风格。当然是推荐前者了。

PHP初学留神(三)的更多相关文章

  1. Linux系统初学-第三课 Linux网络配置1

    Linux系统初学-第三课 Linux网络配置 1.动态IP配置 配置文件路径 /etc/sysconfig/network-scripts/ ls查看网卡eth0,其中HWADDR值得获取:ifco ...

  2. 初学Ajax(三)

    $.ajax() $.ajax()是所有ajax方法中最底层的方法,所有其他方法都是基于$.ajax()方法的封装.这个方法只有一个参数,传递一个各个功能键值对的对象. $.ajax()方法对象参数表 ...

  3. PHP初学留神(五)·小结

    来学习快两个月了,这周末即将回家开始写论文.那么走之前,好好总结一下这两个月的所学所得吧.这段时间,在实验室里做的Web开发主要涉及到了web开发的一些框架内容以及php基础知识.思维导图记录如下. ...

  4. Python爬虫初学(三)—— 模拟登录知乎

    模拟登录知乎 这几天在研究模拟登录, 以知乎 - 与世界分享你的知识.经验和见解为例.实现过程遇到不少疑问,借鉴了知乎xchaoinfo的代码,万分感激! 知乎登录分为邮箱登录和手机登录两种方式,通过 ...

  5. Shell初学(三)传参

    一. 脚本代码:test.sh echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1&quo ...

  6. JavaScrip——初学(三个常用对话框及方法调用)

    一. 三个常用对话框: 1.都必须写在<scrip></scrip> <body> <font>alert("报错")</fo ...

  7. python初学(三)

    1.以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取,并按照排名先后顺序输出不同年份的前10位大学信息,要求对输出结 ...

  8. maven初学(三) SNAPSHOT

    使用场景: 通常一个大型软件是由多个模块组成的,不同的组使用相同应用的不同版本. 在开发阶段,可能经常需要修复bug和优化. 这种情况下就会导致其他组频繁更新代码和pom文件 SANPSHOT SNA ...

  9. html初学(三)

    <!-- 我就是我,不一样的烟花 piu piu piu 干啥子 如来神掌 -- --- ----- .======. ***********啊啊啊啊啊啊 | INRI | | | | | .= ...

随机推荐

  1. linux之ubuntu下php环境配置

    本文主要说明如何在Ubuntu下配置PHP开发环境LAMP.   Ubuntu 搭建 php 环境   所谓LAMP:Linux,Apache,Mysql,PHP   安装 Apache2:(注意可以 ...

  2. 加密解密知识 php非对称加密

    function test1(){ $config = array( "digest_alg" => "sha1", "private_key_ ...

  3. 基于cocos2d-x的游戏框架设计——李成

    视频:http://v.youku.com/v_show/id_XMzc5ODUyMTI4.html?f=17330006 网易科技讯 3月31日,第四届CocoaChina开发者大会暨Cocos2d ...

  4. Apache配置虚拟主机后,不能访问localhost的问题

    今天想试用一下php7,但是发现php7只支持Apache2.4版本,而我电脑上的Apache是2.2版本,为了想尝鲜,就必须去下载新的Apache2.4 php7和apache2.4安装整合以后,l ...

  5. centos vim 中文乱码解决方案

    1.安装中文包:yum -y groupinstall chinese-support   2.修改字符编码配置文件 vi /etc/sysconfig/i18n LANGUAGE="zh_ ...

  6. C语言碰到的一元二次方程

    最近开始在学习C语言,看视频,是http://www.rjzxw.com/jc-74-1.html 碰到老师讲的一元二次方程例子,不懂,所以找了下资料,看了网上一元二次方程的视频(是自己太浮躁了,听不 ...

  7. C# string类型遇到的两个问题

    最近在维护一位离职的同事写的WPF代码,偶然发现他使用C# string类型的两个问题,在这里记录一下. 1. 使用Trim函数移除字串中的空格.换行符等字符串. csRet.Trim(new cha ...

  8. 【linux错误解决】MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'的问题

    问题描述: 从一台linux远程连接另一台linux上的MySQL, 出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.x ...

  9. 20160611-20160714springmvc入门进阶

    springmvc第二阶段 高级知识 复习: springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器 ...

  10. 经历:easyui的layout自适应高度布局

    在使用easyui的layout布局的时候,在某种情况下,我们会在后续的逻辑中修改一下layout的某个region的高度,那么该怎么做呢?  我就遇到了这样的情况,今天需求经理提出了一个需求:认证用 ...