面向对象入门案例:封装一个数据库操作Model类

面向对象编程思维的访问轨迹:
1、实例化1个对象
2、查看对象的实例化:初始化数据库的连接;把数据表传参给一个变量
3、对象访问的成员方法
4、查看对象的成员方法
5、成员方法的运行代码:声明1个SQL语句遍历,作为参数传给一个成员方法
6、查看成员方法的代码:数据库的查询操作,返回查询的结果
7、对象调用的成员方法结束,返回结果给调用者!

运用的面向对象知识:
1、外部访问成员方法:连贯操作
$res = new Model(‘user’); //创建一个对象
$res->field(array(‘id’, ‘username’, ‘fullname’))->limit(3)->select(); //使用创建的对象$res,调用类中的公有方法

2、代码重用性:对象自身访问成员方法(辅助方法,封装性)
如:protected function query() //这种辅助的操作方法可以修饰词可以是private或protected
{
//sql语句执行语句,返回操作后的结果
}
3、伪变量$this,表示对象自己本身

源码:https://github.com/webjust/case-study/tree/master/Model

备注:
public: 自己,外部,家族均可以访问
private:只有自己可以访问(使用$this内部访问)
protected:除了外部以外,都可以访问,一般用于继承的类的情况

用一个案例详解mysqli_query()执行SQL语句后的结果

//创建用户表

Select Code
1
2
3
4
5
6
-- 创建用户表 users
CREATE TABLE `users`(
`id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`username` varchar(255) NOT NULL UNIQUE,
`password` varchar(255) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

//数据库执行前的操作:连接数据库服务器并选择数据库,判断是否连接,设置字符集

Select Code
1
2
$link = mysqli_connect('127.0.0.1', 'root', '', 'md5') or die("数据库连接错误".mysqli_error());
mysqli_set_charset($link, 'utf8');

//准备SQL语句

Select Code
1
INSERT INTO `table_name`(字段1,字段2) VALUES('值1', '值2');

INSERT执行结果集

Select Code
1
DELETE FROM `table_name` WHERE `id`=id值;

DELETE执行结果集

Select Code
1
UPDATE `table_name` SET `字段1`='值1', `字段1`='值1' WHERE `id`=id值;

UPDATE执行结果集1

UPDATE执行结果集2

注意:更新的时候执行成功,结果集也可能为空,但结果都返回boolean TRUE

Select Code
1
SELECT FROM `table_name` WHERE `字段1`='值1' AND `字段1`='值1';

SELETE查询数据结果集

//执行SQL语句
$res = mysqli_query($link, $sql)

//处理结果集
当我们执行的SQL语句是DML语句,也就是增,删,改三种语句,这时mysqli_query()返回的类型是布尔类型,执行成功返回真,失败返回假,但有时SQL语句执行成功,但不一定有受影响行数,所以我们
可以使用mysqli_affected_rows($link)函数返回受影响行数;

使用mysqli_num_rows($result)函数来获取结果集当中的记录条数,使用下面4种函数将结果集资源当中的数据得到(mysqli_fetch_assoc()常用):
1.mysqli_fetch_array() 返回索引和关联的混合数组
2.mysqli_fetch_assoc() 返回关联数组
3.mysqli_fetch_row() 返回索引数组
4.mysqli_fetch_object() 返回一个对象

//释放结果集资源(作用于SELECT查询)

Select Code
1
mysqli_free_result($res)

//关闭数据库连接

Select Code
1
mysqli_close($link)

案例代码:
https://github.com/webjust/case-study/tree/master/encrypt/md5

Python解释器执行代码方法与常见问题

一、乱码问题:
python cmd窗口执行python

1、在E盘创建了一个python文件夹,存放python的代码

2、编写一个python代码,取名test.py

3、在Windows下,打开CMD窗口,进入到E:\python目录

4、执行“python test.py”,输出结果打印在窗口。

github新建项目学习python

我的python学习代码:https://github.com/webjust/case-python

第一个python执行结果

细节:在Windows中,文件格式使用ANSI编码,可解决中文字符乱码问题!编辑器:Notepad

设置UTF-8格式:

# -*- coding:utf-8 -*-

二、Python代码缩进不统一会导致程序报错
python缩进空格

Sublime安装函数块注释快捷插件DocBlockr

Sublime能支持 /** @param @return */ 这种注释的代码提示吗?这需要安装1个插件DocBlockr (这也是Sublime编辑器的强大之处,其他插件的安装方法都类似)

使用方法:
在函数function的代码的上一行,输入’/**’,然后按TAB键自动补全。效果如下:

DocBlockr效果

更多PHP_PSR规范[https://segmentfault.com/a/1190000002521577],请参考文档

1. 打开Package Control输入:Install Package (快捷键:ctrl+shift+p)

方法1:通过菜单栏进入

Package Control菜单

方法2:通过快捷键进入

Package Control快捷键

说明:这个过程可能需要等5-20s左右 (注意状态栏左下角)

2. 输入插件名称:DocBlockr,即可安装。

DocBlockr

结语:更多Sublime代码神器的使用方法和快捷键,读者可以自行搜集整理。