php下操作mysql详解之初级!(面向对象,面向过程)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

mysql> create table user(

    -> id int primary key auto_increment,

    -> name varchar(32) not null,

    -> password varchar(64) not null,

    -> email varchar(128) not null,

    -> age tinyint unsigned not null

-> );

mysql> insert into user (name,password,email,age) values("gjp",md5(123456),'gjp@

sohu.com',24);

mysql> insert into user (name,password,email,age) values("郭卢",md5(123456),'郭

路@sohu.com',24);

wps_clip_image-29793

wps_clip_image-2147

Mysql客户端的限制,只能接受gbk码,utf8不支持,数据库是支持的

<?php

$conn=mysql_connect("localhost","root","123456");

if(!$conn)

{

die("出错了".mysql_errno());

}

mysql_select_db("test",$conn) or die(mysql_errno());

mysql_query("set names utf8");

$sql="insert into user (name,password,email,age)  values('zhangsan',md5('123'),'zs@163.com',34)";

$res=mysql_query($sql,$conn);

if(!$res)

{

echo "操作失败";

}

if (mysql_affected_rows($conn)>0)

{

echo "操作成功!";

}else{ 

echo "没有受影响的行数!";

}

mysql_close($conn); //要不要无所谓

?>

wps_clip_image-8479

wps_clip_image-21396

Sql语句换成删除:

$sql="delete  from user where id=4";

wps_clip_image-5478

$sql="update user set age=26 where name='lzw'";

wps_clip_image-5836

将上面的文件,封装成类,提高复用性!

两个文件:

index.php

1. <?php

2. require_once 'Sqltool.php';

3. $sql="insert into user(name,password,email,age)  values('lisi',md5('123'),'ls@163.com',36)";

4. $sqlTool=new Sqltool();

5. $res=$sqlTool->execute_dml($sql);

6. if($res==0){

7.  echo "失败";

8. }else if($res==1){

9.  echo "success";

10. }else if($res==2){

11.  echo "没有受影响的行数";

12. }

13. ?>

Sqltool.php

<?php

class Sqltool

{

private $conn;

private $host="localhost";

private $user="root";

private $password="123456";

private $db="test";

function Sqltool()

  {

    $this->conn=mysql_connect($this->host,$this->user,$this->password);

if(!$this->conn)

{

die("fail".mysql_error());

}

mysql_select_db($this->db,$this->conn);

    mysql_query("set names utf8");

  }

//dql 针对select

public function execute_dql($sql)

  {

$res=mysql_query($sql,$this->conn)or die(mysql_error());

return $res;

  }

// dml语句是针对update delete insert 命令,返回值为true false

public function execute_dml($sql)

  {

echo $sql;

    $b=mysql_query($sql,$this->conn);

if(!$b)

    {

return 0;

    }else {

if(mysql_affected_rows($this->conn)>0)

{

return 1;

}else{

return 2;

}

    }

  }

}

?>

wps_clip_image-1721

命令改为$sql="delete from user where id=3";

wps_clip_image-16513

//DQL语句获取的是结果集,执行这的时候,要将dml语句先注释掉

$sql="select * from user";

$sqlTool=new Sqltool();

$res=$sqlTool->execute_dql($sql);

while($row=mysql_fetch_row($res))

{

foreach ($row as $key=>$val)

{

echo "--$val";

}

echo "<br/>";

}

mysql_free_result($res);

执行结果如下:

wps_clip_image-1199

MYSQli的讲解2!

在php.ini 中开启

extension=php_mysqli.dll

例1:使用面向对象的方式

<?php

//header("Content-type: text/html; charset=utf-8");

//1.创建mysql对象

$msi=new mysqli("localhost","root","123456","test");

//验证是否ok

if($msi->cononnect_error){

die("连接失败".$msi->connect_error);

}else {

echo "连接ok"."</br>";

}

//2.操作数据库(发送sql命令)

$sql="select * from user ";

$res=$msi->query($sql);

/* echo "</br>";

print "<pre>";

var_dump($res);

print"</pre>"; */

//3.处理结果

while($row=$res->fetch_row()){

foreach ($row as $key=>$val){

echo "--$val";

}

echo "<br/>";

}

//4.关闭资源

//释放内存;

$res->free();

//关闭链接

$msi->close();

?>

wps_clip_image-30977

由于上面少了这个$msi->query("set names utf8");所以出现汉字的乱码

wps_clip_image-22824

正常了!

例2:用面向过程的方法

<?php

header("Content-type: text/html; charset=utf-8");

//1.得到mysqli连接

$msi=mysqli_connect("localhost","root","123456","test");

if(!$msi){

die("连接失败".mysqli_connect_errno($msi));

}

//2.向数据库发送sql语句(ddl dml dql)

$sql="select * from user";

$res=mysqli_query($msi,$sql);

//var_dump($res);

//3.处理得到的结果

//循环取出结果集

while($row=mysqli_fetch_row($res)){

foreach($row as $key=>$val){

echo "--$val";

}

echo "<br/>";

}

//4.关闭资源

mysqli_free_result($res);

mysqli_close($msi);

?>

wps_clip_image-16975

wps_clip_image-26420

如何区分这几个?

通过上面的程序修改演示:

while($row=mysqli_fetch_row($res)){

print "<pre>";

var_dump($row);

print "</pre>";

echo "<br/>";

}

wps_clip_image-8174

上面是以下标

while($row=mysqli_fetch_assoc($res)){

print "<pre>";

var_dump($row);

print "</pre>";

echo "<br/>";

}

wps_clip_image-26161

上面是以字段名,如id

wps_clip_image-19971

wps_clip_image-752

例3:

<?php

//1.创建mysql对象

$msi=new mysqli("localhost","root","123456","test");

//验证是否ok

if($msi->cononnect_error){

die("连接失败".$msi->connect_error);

}else {

echo "连接ok"."</br>";

}

//2.操作数据库(发送sql命令)

$msi->query("set names utf8");

$sql="insert into user  (name,password,email,age) values('李想',md5('aaaa'),'lixiang@163.com',18)";

$res=$msi->query($sql);

//3.处理结果

if(!$res){

echo "操作失败".$msi->error;

}else{

//影响多少行记录

if($msi->affected_rows>0){

echo "执行ok";

}else{

echo "没有受影响的行数";

}

}

//4.关闭资源

//关闭链接

$msi->close();

?>

wps_clip_image-2667

执行了2次,添加了2条

wps_clip_image-32479

把sql语句改为:(不存在的id)

$sql="update  user set name='haha' where id=11";

wps_clip_image-18373

$sql="update  user set name='haha' where id=9";

wps_clip_image-25984

$sql="delete from user where name='haha'";

增删改都使用了,这里我们来封装成工具类

wps_clip_image-8570

Mysqli封装为工具类sqlHelper:

<?php

class sqlHelper{

private $mysqli;

private static $host="localhost";

private static $user="root";

private static $pwd="123456";

private static $db="test";

//下面这个函数__construct()其实是两个下划线,下面由于我写了一个,所以无法自动调用

该函数,需要手动调,如果写成两个_,创建对象时,则会自动调!

public function _construct(){

$this->mysqli=new  mysqli(self::$host,self::$user,self::$pwd,self::$db);

if($this->mysqli->connect_error){

die("连接失败".$this->mysqli->connect_error);

}else{

echo "success";  //为了调试

}

//设置访问数据库的字符集,保证php是以utf8的方式来操作我们的mysql数据库

$this->mysqli->query("set names utf8");

}

public function execute_dql($sql){

$res=$this->mysqli->query($sql) or die("操作dql".$this->mysqli->error);

return  $res;

}

public function execute_dml($sql){

echo $sql; //为了调试

$res=$this->mysqli->query($sql) or die("操作

dql".$this->mysqli->error);

echo $res;//为了调试

if(!$res){

return 0;

}else{

if($this->mysqli->affected_rows>0){

return 1;

}else {

return 2;

}

}

}

}

使用工具类,实现其功能:

<?php

require_once 'sqlHelper.php';

//header("Content-type: text/html;charset=utf-8");

//创建sqlHelper对象

$sqlhelper=new sqlHelper();

$sql="insert into user(name,password,email,age) values('卢伟da',md5('aaaa'),'lzw@sohu.com','8')";

$sqlhelper->_construct();

$res=$sqlhelper->execute_dml($sql);

if($res==0){

echo "失败";

}else {

if($res==1){

echo "恭喜,成功!";

}else{

echo "没有受影响的行数";

}

}

?>

wps_clip_image-30923

操作数据库成功如下:

wps_clip_image-18311




本文转自 gjp0731 51CTO博http://blog.51cto.com/guojiping/1323187客,原文链接:

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
27天前
|
设计模式 PHP
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
9 0
|
2月前
|
PHP
php的foreach神操作
php的foreach神操作
22 0
|
7天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
|
21天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
27天前
|
关系型数据库 MySQL Linux
Centos7 yum安装lAMP 环境 php版本5.6.38 mysql版本5.7.22
Centos7 yum安装lAMP 环境 php版本5.6.38 mysql版本5.7.22
27 0
|
3月前
|
监控 关系型数据库 MySQL
PHP与MySQL的结合:实现局域网上网行为监控软件的数据库管理
在当今信息化时代,网络安全日益成为重要的话题。为了有效监控和管理局域网上网行为,开发一个基于PHP和MySQL的数据库管理系统是一个理想的选择。本文将介绍如何结合PHP和MySQL,开发一款简单而高效的局域网上网行为监控软件,并重点关注数据库管理方面的实现。
199 0
|
4月前
|
SQL PHP 数据库
PHP案例:每一个账号登陆后的操作是隔离的(使用token进行登录)
PHP案例:每一个账号登陆后的操作是隔离的(使用token进行登录)
PHP案例:每一个账号登陆后的操作是隔离的(使用token进行登录)
|
18小时前
|
关系型数据库 MySQL Linux
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
|
1天前
|
SQL 缓存 关系型数据库
MySQL常见问题解决和自动化安装脚本
这篇内容包含了两个主要部分:解决MySQL登录问题和处理GPG密钥问题。当MySQL密码正确但无法登录时,可以通过执行SQL命令`ALTER USER`和`flush privileges`来修改和重置密码。对于MySQL安装时的GPG密钥错误,首先需要强制删除旧的MySQL仓库包,导入新的GPG公钥,然后安装MySQL服务器。如果遇到GPG检查错误,可以使用`--nogpgcheck`参数忽略检查来安装。最后,提供了一个自动化安装MySQL的脚本,用于检查旧版本、卸载残留、安装MySQL8并启动服务。
11 1
MySQL常见问题解决和自动化安装脚本
|
5天前
|
SQL 关系型数据库 MySQL
【MySQL-3】图形化界面工具DataGrip安装&配置&使用
【MySQL-3】图形化界面工具DataGrip安装&配置&使用