php小总结之 mysqli面向过程、面向对象和PDO在增删改查使用中的一些小区别
本篇介绍一下连接数据库,以及操作sql语句中的区别,其他的暂不介绍,其中需要注意的是,很多参数只介绍一种,其他的请自行百度
连接数据库
<?php
$host = '127.0.0.1'; //ip
$user = 'root'; //账号
$password = 'weicunbin123'; //密码
$db = 'testguest'; //数据库名字
$type = 'mysql'; //数据库类型
// $dsn =“数据库类型:host=数据库的域名;dbname=数据库名;”;
$dsn = "$type:host=$host;dbname=$db;"; //data source name =>数据源名字
// myqli面向过程
$conn =mysqli_connect($host,$user,$password,$db);
if(mysqli_connect_error($conn)){ //如果没有错误,会返回一个NULL
die("连接失败,错误:" . mysqli_connect_error($conn)); //打印错误信息
}
// 设置字符集
mysqli_set_charset($conn,'utf8');
// mysqli面向对象
$mysqli = new mysqli($host,$user,$password,$db);
if($mysqli->connect_errno){ //连接成功errno应该为0
die('Connect Error:'.$mysqli->connect_error);
}
$mysqli -> set_charset('utf8');
// PDO
try{
$pdo = new PDO($dsn,$user,$password);
}catch(PDOException $e){
die('connect error:'.$e -> getMessage());
}
$pdo->exec("set names utf8"); //设置字符集
?>
使用sql语句中的一些不同(基础)
sql语句
// 增
$add_sql = "INSERT INTO db_demo(db_name,db_password,db_date)
VALUES('name','password',NOW() )";
// 删
$del_sql = "DELETE FROM db_demo WHERE db_id = 80";
// 改
$update_sql = "UPDATE db_demo SET db_name='爱你' ,db_password='不可能' WHERE db_id = 100";
// 查
$select_sql = "SELECT * FROM db_demo ORDER BY db_date DESC";//倒叙查询
操作sql语句,mysqli面向过程
// 执行sql语句都用mysqli_query()函数
// 针对成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,将返回一个 mysqli_result 对象。
// 针对其他成功的查询,将返回 TRUE。如果失败,则返回 FALSE。
$conn_result = mysqli_query($conn,$add_sql);
echo '增,上一次MySQL 操作影响的行数为:'.mysqli_affected_rows($conn);
echo '增,上一次insert操作所产生的id为:'.mysqli_insert_id($conn);
echo '<br>';
$conn_result = mysqli_query($conn,$del_sql);
echo '删,上一次MySQL 操作影响的行数为:'.mysqli_affected_rows($conn);
echo '<br>';
$conn_result = mysqli_query($conn,$update_sql);
echo '改,上一次MySQL 操作影响的行数为:'.mysqli_affected_rows($conn);
echo '<br>';
$conn_result = mysqli_query($conn,$select_sql);
echo '查,总共返回的数据为数量为:'.mysqli_num_rows($conn_result);
while($list = mysqli_fetch_assoc($conn_result)){//从结果集中取得一行作为关联数组:
print_r($list);
}
mysqli_free_result($conn_result); // 释放结果集
echo '<br>';
mysqli面向对象
$mysqli_result = $mysqli -> query($add_sql);
echo '增,上一次MySQL 操作影响的行数为:'.$mysqli -> affected_rows;
echo '增,上一次insert操作所产生的id为:'.$mysqli -> insert_id;
echo '<br>';
$mysqli_result = $mysqli -> query($del_sql);
echo '删,上一次MySQL 操作影响的行数为:'.$mysqli -> affected_rows;
echo '<br>';
$mysqli_result = $mysqli -> query($update_sql);
echo '改,上一次MySQL 操作影响的行数为:'.$mysqli -> affected_rows;
echo '<br>';
$mysqli_result = $mysqli -> query($select_sql);
echo '查,总共返回的数据为数量为:'.$mysqli_result -> num_rows ;
while($list = $mysqli_result -> fetch_assoc()){
print_r($list);
}
$mysqli_result -> free_result();// 释放结果集
echo '<br>';
PDO
// pdo有两个执行语句中的的函数,这一点需要注意区分,主要是查询语句和其他的不同
$pdo_result = $pdo -> exec($add_sql);
// 不会从一条 SELECT 语句中返回结果。
// 在一个单独的函数调用中执行一条 SQL 语句,返回受此语句影响的行数。
// 这一点与mysqli不同,需要注意
echo '增,受此语句影响的行数为:'. $pdo_result;
echo '增,上一次insert操作所产生的id为:'.$pdo -> lastInsertId();
echo '<br>';
$pdo_result = $pdo -> exec($del_sql);
echo '删,受此语句影响的行数为:'.$pdo_result;
echo '<br>';
$pdo_result = $pdo -> exec($update_sql);
echo '改,受此语句影响的行数为:'.$pdo_result;
echo '<br>';
$pdo_result = $pdo -> query($select_sql);
// 如果成功,PDO::query()返回PDOStatement对象,如果失败返回 FALSE 。
// echo '查,总共返回的数据为数量为".$pdo_result->rowCount();
//返回受 DELETE、INSERT、 或 UPDATE 语句影响的行数。
// 所以最好不用使用rowCount()获取sql语句返回的行数,正确获取查询语句返回的行数如下
$rows = $pdo_result -> fetchAll();//fetchAll()返回一个包含结果集中所有行的数组
echo '查,总共返回的数据为数量为:'.count($rows);
foreach ($rows as $list) {
echo '查,第一种,数据为:'.$list['db_date'].'<br>';
}
while($list = $pdo_result -> fetch(PDO::FETCH_ASSOC)){ //从结果集中获取下一行,和mysqli中 -> fetch_assoc()一样
echo '查,第二种,数据为:'.$list['db_date'].'<br>';
}
// 有一点需要注意,fetch和fetchall不能同时存在,不然会之触发一个
echo '<br>';
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战