php操作mysql
php本身不能操作mysql,但是php有扩展可以实现操作mysql。
php操作mysql的扩展:mysql,mysqli和PDO扩展。
mysql扩展:纯面向过程,里面都是函数,加载扩展后可以调用函数。
mysqli扩展:面向过程+面向对象,里面有函数也有类,加载扩展后可以选择调用函数或调用类操作
PDO:纯面向对象,只有类,加载后只能调用类。
mysql扩展在php5.5之后就移除了,小伙伴注意了。
当php来对mysql进行操作之后:php的角色是mysql的一个客户端
客户端操作服务端有必要的流程
- 连接认证:数据库连接资源
mysql_connect(服务器地址包含端口,用户名,用户密码);
默认的:mysql_connect会产生一个连接资源,即便是重新连接,也会返回原有的连接资源
如果真的想产生多一个连接:是新的可以在mysql_connect函数的第四个参数控制:true- php发送sql指令(等待执行结果)
- mysql服务端接收指令,执行指令,返回结果
- php接收结果
mixedmysql_query(sql指令);
boolean结果;sql指令没有返回值,布尔true结果只能代表sql语句没有语法错误,false就代表是sql语句有语法错误:主增删改
resource结果:结果集资源,sql指令有结果返回(show,select),结果集永远为true,主查询
- php没有办法直接使用结果集:需要解析结果集mysql扩展提供了一系列函数:mysql_fetch系列:任何操作都是指针操作:操作完就会指针下移。
mysql_fetch_array:默认获取混合数组,有一组关联,有一组索引。
当前函数可以实现:只获取关联数组或者索引数组。通过第二个参数限制:MYSQL_BOTH是默认的,MYSQL_ASSOC是关联数组,MYSQL_NUM是索引数组。
关联数组获取:MYSQL_ASSOC
索引数组获取:MYSQL_NUM
mysql_fetch_row:获取索引数组
mysql_fetch_assoc:直接获取关联数组
不管是哪个fetch:最终如果结果集指针移动到最后,返回都是false- 如果指针已经移动到最后,那么需要重置指针实现其他操作。
mysql_data_seek(结果集资源,位置从0开始);
- 获取的数据往往只有一行:实际上查多少是为了显示全部:解析全部,循环遍历来实现。
- 释放资源:mysql资源通常不需要释放(脚本执行周期不会太长,但是数据库的操作是贯穿整个脚本的)
mysql_close(资源变量);
增删改查
从计算机角度出发:增删改都属于写,查属于读。
写操作:
连接认证:不一定连接成功,需要对结果进行判断,可以直接使用三目运算(逻辑或)来进行处理,但是无法获取错误信息。
如果要获取错误信息,那么需要使用mysql提供的获取错误的函数:
mysql_errno()
:获取错误编号,mysql_error()
:获取错误信息。