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();