Blogger Information
Blog 34
fans 0
comment 1
visits 23409
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQLi与PDO操作数据库—2018年8月30日23时45分
感恩的心的博客
Original
575 people have browsed it

1、编程:MySQLi面向对象中的查询操作

 

实例

<?php

//感恩
//认真的人该变了自己,坚持的人改变了命运!
//日行一善,改变命运!

require 'demo1.php';
$sql = "SELECT `staff_id`,`name`,`salary` FROM `staff` WHERE `salary`>?;";

$stmt = $mysqli->stmt_init();
if (!$stmt->prepare($sql)) {
    //打印sql语句检测阶段出错
    exit($stmt->errno . ':' . $stmt->error);
}
//i代表整型类型
$stmt->bind_param('i', $salary);
$salary = 5000;
if (!$stmt->execute()) {
    //执行阶段出错
    exit($stmt->errno . ':' . $stmt->error);
}
//存储结果集
$stmt->store_result();
//将结果集绑定到变量上
$stmt->bind_result($id, $name, $salary);

if ($stmt->num_rows > 0) {
    while ($stmt->fetch()) {
        echo 'id:' . $id . ',name:' . $name . ',salary:' . $salary . '<br>';
    }
} else {
    exit('当前表中无数据<br>');
}
//释放结果集
$stmt->free_result();
//关闭预处理
$stmt->close();
//关闭SQL连接
$mysqli->close();

运行实例 »

点击 "运行实例" 按钮查看在线实例

2. 问答: PDO 的优势

PDO有非常多的操作却是MySQL扩展库所不具备的:

(1)PDO真正的以底层实现的统一接口数库操作接口,不管后端使用的是何种数据库,如果代码封装好了以后,应用层调用基本上差不多的,当后端数据库更换了以后,应用层代码基本不用修改.

(2)PDO支持更高级的DB特性操作,如:存储过程的调度等,mysql原生库是不支持的.

(3)PDO是PHP官方的PECL库,兼容性稳定性必然要高于MySQL Extension,可以直接使用 pecl upgrade pdo 命令升级.

(4)PDO可以防止SQL注入,确保数据库更加安全。

3. 编程:PDO 连接数据库

 

实例

<?php

//感恩
//认真的人该变了自己,坚持的人改变了命运!
//日行一善,改变命运!
//PDO PHP数据对象,提供了一个统一的访问接口

$dsn='mysql:host=127.0.0.1;dbname=php';

$user='root';
$password='root123';

try{
    $pdo=new PDO($dsn,$user,$password);
    echo '连接成功!';
}catch(PDOException $e){
    die('Connect Error:'.$e.getMessage());
}
//关闭连接
$pdo=null;

运行实例 »

点击 "运行实例" 按钮查看在线实例


4. 编程:PDO新增数据

实例

<?php

//感恩
//认真的人该变了自己,坚持的人改变了命运!
//日行一善,改变命运!

$pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root123');

$sql="INSERT `user` SET `user_name`=:name,`email`=:email,`password`=sha1(:password);";
//预处理
$stmt=$pdo->prepare($sql);
//绑定参数
$data=['name'=>'菩萨','email'=>'pusa@pusa.cn','password'=>'pusa'];
$stmt->bindParam(':name', $data['name'], PDO::PARAM_STR);
$stmt->bindParam(':email', $data['email'], PDO::PARAM_STR);
$stmt->bindParam(':password', $data['password'], PDO::PARAM_STR);

if($stmt->execute()){
    echo '成功添加'.$stmt->rowCount().'条记录';    
}else{
    echo '<h3>添加失败:</h3>';
    print_r($stmt->errorInfo());    
}

//批量添加
$stmt->execute(['name' => 'pusa1', 'email' => 'pusa1@php.cn', 'password' => 'pusa']);
$stmt->execute(['name' => 'pusa2', 'email' => 'pusa2@php.cn', 'password' => 'pusa']);
$stmt->execute(['name' => 'pusa3', 'email' => 'pusa3@php.cn', 'password' => 'pusa']);
$stmt->execute(['name' => 'pusa4', 'email' => 'pusa4@php.cn', 'password' => 'pusa']);


$stmt=null;
$pdo=null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

5.编程: PDO更新数据

实例

<?php

//感恩
//认真的人该变了自己,坚持的人改变了命运!
//日行一善,改变命运!

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root123');

$sql = "UPDATE `user` SET `user_name`=:name WHERE `user_id`=:id";
//预处理
$stmt = $pdo->prepare($sql);

$stmt->execute(['name'=>'pusa','id'=>3]);
echo '<h3>成功更新了'.$stmt->rowCount().'条数据</h3>';
$stmt = null;
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例


6. 编程: PDO 删除数据

实例

<?php

//感恩
//认真的人该变了自己,坚持的人改变了命运!
//日行一善,改变命运!

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root123');

$sql = "DELETE FROM `user` WHERE `user_id`=:id";
//预处理
$stmt = $pdo->prepare($sql);

//$stmt->execute(['name' => 'pusa4']);

if ($stmt->execute(['id' => 10])) {
    echo '<h3>成功删除了' . $stmt->rowCount() . '条记录</h3>';
} else {
    echo '<h3>无删除</h3>';
    print_r($stmt->errorInfo());
    exit();
}


$stmt = null;
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例


7. 编程:PDO查询数据

查询方式1

实例

<?php

//感恩
//认真的人该变了自己,坚持的人改变了命运!
//日行一善,改变命运!

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root123');

$sql = "SELECT `user_name`,`email` FROM `user` WHERE `user_id`<:id";
//预处理
$stmt = $pdo->prepare($sql);

//$stmt->execute(['name' => 'pusa4']);

if ($stmt->execute(['id' => 8])) {
    echo '<h3>成功选择了' . $stmt->rowCount() . '条记录</h3>';
} else {
    echo '<h3>无选择</h3>';
    print_r($stmt->errorInfo());
    exit();
}

$rows=$stmt->fetchAll();
foreach($rows as $row){
    echo 'name:',$row['user_name'],',Email:',$row['email'],'<br>';
}

$stmt = null;
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

查询方式2

实例

<?php

//感恩
//认真的人该变了自己,坚持的人改变了命运!
//日行一善,改变命运!
echo '<pre>';

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root123');

$sql = "SELECT `user_name`,`email` FROM `user` WHERE `user_id`<:id";
//预处理
$stmt = $pdo->prepare($sql);

//$stmt->execute(['name' => 'pusa4']);

if ($stmt->execute(['id' => 8])) {
    echo '<h3>成功选择了' . $stmt->rowCount() . '条记录</h3>';
} else {
    echo '<h3>无选择</h3>';
    print_r($stmt->errorInfo());
    exit();
}
//第1行第1列
echo $stmt->fetchColumn(0), '<br>';
//第2行第1列
echo $stmt->fetchColumn(0), '<br>';
//第1行第2列
echo $stmt->fetchColumn(1), '<br>';

$stmt = $pdo->prepare('SELECT `staff_id`,`name`,`salary` FROM `staff` WHERE `salary`<:salary');;
$stmt->execute(['salary'=>6000]);
//不推荐,有可能返回结果不正确
echo '工资数小于6000的是'.$stmt->rowCount().'<br>';
$stmt->bindColumn('name',$name);
$stmt->bindColumn('salary', $salary);
while($stmt->fetch(PDO::FETCH_BOUND)){
    echo 'name:',$name,',salary:',$salary,'<br>';
}
//推荐这种方法
$stmt = $pdo->prepare('SELECT COUNT(*) FROM `staff` WHERE `salary`>:salary');
$stmt->execute(['salary' => 6000]);
echo '工资数大于6000的是'.$stmt->fetchColumn().'<br>';
//var_dump($stmt->fetchAll());


$stmt = null;
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

8. 问答:获取结果集记录数量的正确方式是什么?

//推荐这种方法
$stmt = $pdo->prepare('SELECT COUNT(*) FROM `staff` WHERE `salary`>:salary');
$stmt->execute(['salary' => 6000]);
echo '工资数大于6000的是'.$stmt->fetchColumn().'<br>';

9.小结

本章学习了PDO方式的增删改查,对我们后续工作帮助很大。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post