1,通过今天的学习,我懂得了,通过mysqli面向对象对数据库进行操作,同时也懂得了pdo对数据库的增删改查操作,还明白了pdo和mysqli的区别,以下是我的代码:
1,使用pdo进行插入(复杂)
<meta charset="UTF-8">
<?php
/**
* pdo链接查询数据库,并且执行增删改查功能
*/
//创建变量
$name='小强';
$age='21';
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql="INSERT IGNORE `show` SET name=:name,age=:age";
//创建预定义对象
$stmt=$pdo->prepare($sql);
//绑定参数
$data=['name'=>$name,'age'=>$age];
//两种方法 1,
$stmt->bindParam(':name',$data['name'],PDO::PARAM_STR);
$stmt->bindParam(':age',$data['age'],PDO::PARAM_STR);
if ($stmt->execute()) //执行返回true or false
{
echo '受影响的行数:'.$stmt->rowCount();
}else
{
var_dump($stmt->errorInfo());
}
//释放pdo
$pdo=null;点击 "运行实例" 按钮查看在线实例
2,使用pdo进行插入(简化)
<meta charset="UTF-8">
<?php
/**
* pdo链接查询数据库,并且执行增删改查功能
*/
//创建变量
$name='小军';
$age='28';
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//创建sql语句
$sql="INSERT IGNORE `show` SET name=:name,age=:age";
//创建预定义对象
$stmt=$pdo->prepare($sql);
//绑定参数
$data=['name'=>$name,'age'=>$age];
////两种方法 2,
if ($stmt->execute($data)) //执行返回true or false
{
echo '受影响的行数:'.$stmt->rowCount();
}else
{
var_dump($stmt->errorInfo());
}
//释放pdo
unset($pdo);点击 "运行实例" 按钮查看在线实例
3,使用pdo更新
<meta charset="UTF-8">
<?php
/**
*更新
*/
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql=" UPDATE `show` set name=:name where id=:id";
//创建预定义对象
$stmt=$pdo->prepare($sql);
if ($stmt->execute(['name'=>'小铁','id'=>29])) //执行返回true or false
{
echo '受影响的行数:'.$stmt->rowCount();
}else
{
var_dump($stmt->errorInfo());
}
//释放pdo
$pdo=null;点击 "运行实例" 按钮查看在线实例
4,使用pdo删除
<?php
/**
*删除
*/
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql=" DELETE FROM `show` where id=:id";
//创建预定义对象
$stmt=$pdo->prepare($sql);
if ($stmt->execute(['id'=>29])) //执行返回true or false
{
echo '受影响的行数:'.$stmt->rowCount();
}else
{
var_dump($stmt->errorInfo());
}
//释放pdo
$pdo=null;点击 "运行实例" 按钮查看在线实例
5,使用pdo查询所有信息
<meta charset="UTF-8">
<?php
/**
* 查询
*/
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql=" select * FROM `show` where id>:id";
//创建预定义对象
$stmt=$pdo->prepare($sql);
if ($stmt->execute(['id'=>0]))
{
//一次性去除,不建议,内存爆炸
// $rows=$stmt->fetchAll();
// foreach ($rows as $row)
// {
// echo '姓名:'.$row['name']."~~年龄:".$row['age'].'<br>';
// }
while ($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
echo '姓名:'.$row['name']."~~年龄:".$row['age'].'<br>';
}点击 "运行实例" 按钮查看在线实例
6,使用pdo查询字段信息
<meta charset="UTF-8">
<?php
/**
* 将结果集绑定到变量
*/
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
$sql=" select name FROM `show` where id>:id";
//创建预定义对象
$stmt=$pdo->prepare($sql);
//将查询变量返回结果绑定给变量
$stmt->bindColumn('name',$name);
if ($stmt->execute(['id'=>10]))
{
while ($stmt->fetch(PDO::FETCH_BOUND))
{
echo $name.'<br>';
}
//select *from 通过rowcount()获取条数
//select count(*) 通过 fetchColumn()获取
}else
{
echo '查不到数据';
}点击 "运行实例" 按钮查看在线实例
7,使用pdo查询数量
<?php
/**
* 获取某行某列
*
*/
//select *from 通过rowcount()获取条数 不建议,不跨平台
//select count(*) 通过 fetchColumn()获取
//1,连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=test','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//创建sql语句
$pdo->exec("SET CHARACTER SET utf-8");
//$sql=" select * FROM `show` where id>:id";
$sql=" select count(*) FROM `show` where id>:id";
//创建预定义对象
$stmt=$pdo->prepare($sql);
if ($stmt->execute(['id'=>10]))
{
echo $stmt->fetchColumn();
}点击 "运行实例" 按钮查看在线实例
8,使用mysqli 完成查询
<meta charset="UTF-8">
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/8/31
* Time: 13:17
*/
//连接数据库
$mysqli = mysqli_connect("127.0.0.1", "root", "root", "test");
//创建sql语句
$sql="select * from test where age>?";
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
//创建预处理对象
$stmt=$mysqli->stmt_init();
if($stmt->prepare($sql))
{
$stmt->bind_param('i',$age);
$age=1;
if($stmt->execute())
{
//将结果放到缓存中
$stmt->store_result();
//将列绑定到变量上
$stmt->bind_result($id,$name,$age);
//判断数据是否查出
if($stmt->num_rows>0)
{
while($reult=$stmt->fetch())
{
echo '<p>id:'.$id.'---姓名:' .$name.'---年龄:'.$age.'</p>';
}
}else
{
echo '没有数据';
}
//释放结果集
$stmt->free_result();
}else
{
echo $stmt->errno.":".$stmt->error;
}
}
//注销stmt对象
$stmt->close();
$mysqli->close();点击 "运行实例" 按钮查看在线实例
手抄图片
总结:
总体流程
pdo:
1,数据库连接 $pdo=new PDO(DSN,USER,PASSWORD,CHARSET);
2,创建sql语句 $sql='';
3,绑定参数 bindParam(':name',$data['name'],PDO::PARAM_STR); 不是必须
3创建预编译对象 $pdo->prepare($sql);
4,执行 $pdo->prepare($sql)->execute(); 返回ture or false
5,如果增删改,则用 rowcount()返回受影响行数,查询用fetchColoum(),不建议用rowCount();
mysqli
1,$mysqli = new mysqli($db_host,$db_user,$db_pass, $db_name);
2,第二步和pdo一样
3,绑定参数用bindparam(参数类型,参数);
4,$stmt->execute() 执行
5,如果增删改 用 affected_rows返回受影响的行数,增加可以 用 insert_id 返回增加的id
6,如果查询 执行第四步后 则需要
a,获取结果集并放到缓存区 $stmt->store_result();
b,将结果集中的列绑定到变量上 $stmt->bind_result($id,$name, $salary);
c,结果集是否不为,只有不为空的时候才遍历 $stmt->num_rows > 0
d while ($stmt->fetch())
7,释放结果集 $stmt->free_result();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号