0

0

PHP Mysqli 常用代码集合

迷茫

迷茫

发布时间:2017-02-04 16:45:32

|

2681人浏览过

|

来源于php中文网

原创

PHP5.0开始,不仅可以使用早期的mysql数据库扩展函数,还能使用新扩展的mysqli技术实现与mysql数据库的信息交流,PHP的mysqli扩展被封装在在一个类中,它是一种面向对象技术,只能在PHP5和MYSQL4,1或更高的版本才能使用,(i)表示该进,使用mysqli,执行速度更快,更方便,更高效,也可以使数据库访问更安全(因为用类模式)

使用mysqli 简单流程

设置PHP.ini 配置文件
extension=php_mysqli.dll

//创建连接

$conn = new mysqli($servername, $username, $password, $dbname);

//检测连接

if ($conn->connect_error)  
{ 
  die("Connection failed: " . $conn->connect_error); 
}

//获取数据库返回值

if($stmt=$con->prepare("SELECT username,password FROM member WHERE username=? AND password=?")) 
{ 
  $stmt->bind_param("ss",$username,$password); 
  $stmt->execute(); 
  $stmt->bind_result($U,$P); 
  $HasData=false; 
  while($stmt->fetch()) 
  { 
    $HasData=true; 
    echo "username->".$U." password->".$P."
"; } }

//关闭连接

$conn->close();

//常用语法
INSERT INTO [表名] ([字段1],[字段2]) VALUES ([值1],[值2]);
SELECT * FROM [表名] WHERE [表达式] ORDER BY [字段1],[ASC/DESC 升/降] [字段2],[ASC/DESC 升/降];
DELETE FROM [表名] WHERE [表达式];
UPDATE [表名] SET [字段1]=[值1],[字段2]=[值2] WHERE [表达式];
获取总行数:SELECT COUNT(*) FROM [表]

//中文乱码

//针对页面 
header("Content-Type:text/html;charset=utf-8"); 
//针对数据库 
mysqli->query("SET CHARACTER SET 'utf8'");//读库  
mysqli->query("SET NAMES 'utf8'");//写库

以下是一些实例

连接mysqli

建立MYSQL配置文件 config.ini.php

config.ini.php 内容如下:

(用mysqli链接MYSQL数据库)

requery_once("config.ini.php");
$mysqliObj = new mysqli($dbhost,$dbuser,$dbpwd,$dbname);
if(mysqli_connect_errno()){
 echo "连接失败".mysqli_connect_error();
 exit();
}
$mysqliObj->query("set name $charName");

(其他操作)

查询

(单条查询)
$sql = "drop table if exists user;";
$mysqliObj->query($sql);
  
(多条查询)
$musqliObj->multip_query($sql)
  
 
返回执行$sql受影响的行数()
  
if($mysqliObj->query($sql))
echo $mysqliObj->affected_rows;
  
insert 插入时,返回插入的id (很有用) 
 
 $num = $mysqliObj->insert_id;

三种处理查询结果

$sql = "select * from user";
 $result = $mysqli->query($sql);
  
(1)fetch_row()  返回索引数组
fetch_row()
while(list($id,$name,$pwd)=$result->fetch_row()){
echo "id: ".$id." name:".$name." pwd:".$pwd."
"; } (2)fetch_assoc() 返回关联数组 fetch_assoc() while ($row = $result->fetch_assoc()){ echo "id:".$row["userId"]." name:".$row["userName"]." pwd:".$row["password"]."
"; } (3)fetch_object()返回对象 while($row = $result->fetch_object()){ echo "id:".$row->userId." name:".$row->uerName." pwd:".$row->password."
"; }

关联数组,就是嵌套的数组 如:

 'John Smith', 'home' => '555-555-5555',
        'cell' => '666-555-5555', 'email' => 'john@myexample.com'),
     array('name' => 'Jack Jones', 'home' => '777-555-5555',
        'cell' => '888-555-5555', 'email' => 'jack@myexample.com'),
     array('name' => 'Jane Munson', 'home' => '000-555-5555',
        'cell' => '123456', 'email' => 'jane@myexample.com')
    );
 
?>

使用 mysqli_stmt 类

mysql4.1版本开始提供一种预处理(prepared statement)的机制,它可以见整个命令向MYSQL服务器发送一次,以后只有参数变化,MYSQL只需要对命令做一次的分析就够了,大大减少需要传输的数据量,还提高了命令的处理效率(注,在不需要连接时应该立刻关闭close())

步骤:

1,预备SQL命令
  $sql = "insert into user(name,pwd) values(?,?)";
  $stms = $mysqli->prepare($sql);
2.绑定数据
  $stms->bind_param('ss',$name,$pwd);   (注意'ss':其要与后面的变量对应($name,$pwd)
                                           i  所有inerger类型
                                           d  double 或float 类型
                                           s  所有其他类型包括字符串
                                           b  二进制(blob,二进制字节串)
                                         
                                         )
  $name = "huang";
  $pwd = "123456";
3.执行
  $stms->execute();
[4.在绑定执行另一组数据  
  $name = "he";
  $pwd = "666666";
  $stms->execute();
 ]
5.关闭
  $stmt->close();
  $mysqli->close();
 
(其他有用参数)
 $num = $stmt->affected_rows;      受影响的行数
 $id  = $stmt->insert_id;          当是插入命令时,返回插入的行id(自动)

事务处理

在默认情况下,MYSQL是以自动提交(autocommit)模式运行,这就意味着所执行的每一个语句都将立即写入数据库中,但如果使用事务安全的表格类型,是不希望自动提交的行为的
事务处理
当执行多条MYSQL命令时,当然希望当其中一条命令出错时,所有的命令都不执行,返回执行命令之前的状态
这就用到事务了
  
 简单运用事务流程
1.写好SQL命令
  $sql1 = "insert user(name) values('huang','123456')";
  $sql2 = "update account set number = number+1";
2.关闭MYSQL事务处理的自动提交模式
  $mysqli->cutocommit(0);
3.试执行命令 
  $success = true;
  $res1 = $mysqli->query($sql1);
  if(!$res1 or $mysqli->affected_rows !=1){
     $success = false;
  }
  $res2 = $mysqli->query($sql2);
  if(!$res2 or $mysqli->affected_rows !=1){
     $success = false;
  }
4.查看执行情况,都成功执行,有失败回滚初态
  if($success ){
     $mysqli->commit();
     echo "执行成功";
  }else{
     $mysqli->rollback();
     echo "执行失败";
  }
5.恢复MYSQL事务处理的自动提交模式
  $mysqli->cutocommit(1);
  $mysqli->close();
  
mysql 目前只有InnDB和BDB两种数据包类型才支持事务 
InnoDB最快
(创建InnDB类型表)

create table user(
id int(10) not null auto_increment,
name varchar(50) not null,
pwd varchar(50) not null,
primary key(id)
)type=InnoDB

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.6万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号