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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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=mysqlquery(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=mysqlconnect(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=mysqlquery(sql,$this->conn)or die(mysql_error());

return $res;

  }

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

public function execute_dml($sql)

  {

echo $sql;

    b=mysqlquery(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=mysqlfetchrow(res))

{

foreach (rowaskey=>$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 (rowaskey=>$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=mysqliquery(msi,$sql);

//var_dump($res);

//3.处理得到的结果

//循环取出结果集

while(row=mysqlifetchrow(res)){

foreach(rowaskey=>$val){

echo "--$val";

}

echo "<br/>";

}

//4.关闭资源

mysqli_free_result($res);

mysqli_close($msi);

?>

wps_clip_image-16975

wps_clip_image-26420

如何区分这几个?

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

while(row=mysqlifetchrow(res)){

print "<pre>";

var_dump($row);

print "</pre>";

echo "<br/>";

}

wps_clip_image-8174

上面是以下标

while(row=mysqlifetchassoc(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=newmysqli(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)ordie("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客,原文链接:

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
344
分享
相关文章
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
45 18
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
168 25
PHP与MySQL动态网站开发实战指南####
——深入探索LAMP栈下的高效数据交互与处理技巧 ####
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
PHP与MySQL动态网站开发实战指南####
深入探索PHP与MySQL的协同工作机制,本文旨在通过一系列实战案例,揭示构建高效、稳定且用户友好的动态网站的秘诀。从环境搭建到数据交互,再到最佳实践分享,本文为开发者提供了一条清晰的学习路径,助力其在LAMP(Linux, Apache, MySQL, PHP/Perl/Python)栈上实现技术飞跃。 ####
php实现一个简单的MySQL分页
通过本文的详细步骤和代码示例,我们实现了一个简单的PHP MySQL分页功能。主要步骤包括计算总记录数、设置分页参数、查询当前页的数据以及生成分页链接。这种分页方式适用于大多数Web应用,能够有效提升用户体验和页面响应速度。
117 4
PHP与MySQL的无缝集成:构建动态网站的艺术####
本文将深入探讨PHP与MySQL如何携手合作,为开发者提供一套强大的工具集,以构建高效、动态且用户友好的网站。不同于传统的摘要概述,本文将以一个生动的案例引入,逐步揭示两者结合的魅力所在,最终展示如何通过简单几步实现数据驱动的Web应用开发。 ####
PHP与MySQL的高效协同开发策略####
本文深入探讨了PHP与MySQL在Web开发中的协同工作机制,通过优化配置、最佳实践和高级技巧,展示了如何提升数据库交互性能,确保数据安全,并促进代码可维护性。我们将从环境搭建讲起,逐步深入到查询优化、事务管理、安全防护及性能调优等核心环节,为开发者提供一套实战驱动的解决方案框架。 ####
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 servername="localhost";username = "root"; password="password";dbname = "test_db"; // 创建连接 conn=newmysqli(se
125 0
PHP与MySQL的深度整合:构建高效动态网站####
在当今这个数据驱动的时代,掌握如何高效地从数据库中检索和操作数据是至关重要的。本文将深入探讨PHP与MySQL的深度整合方法,揭示它们如何协同工作以优化数据处理流程,提升网站性能和用户体验。我们将通过实例分析、技巧分享和最佳实践指导,帮助你构建出既高效又可靠的动态网站。无论你是初学者还是有经验的开发者,都能从中获得宝贵的见解和实用的技能。 ####
53 0

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等