原创后端,MySQL

PHP数据库篇:PDO链接数据库/CURD增删改查操作

本文阅读 3 分钟
首页 后端,MySQL 正文

PDO操作

  • 数据库配置文件database.php
<?php
return[
    'type'=>'mysql',
    'host'=>'localhost',
    'dbname'=>'user',
    'port'=>'3306',
    'username'=>'root',
    'password'=>'root',
    'charset'=>'utf8'
];
  • 数据库链接文件catenate.php
<?php
namespace pdo_edu;
use Exception;
use PDO;

$dbConfig = require 'database.php';

extract($dbConfig);

$dsn = $type. ':host='. $host.';dbname='.$dbname;

try {
    $db = new PDO($dsn,$username,$password);
} catch (Exception $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
}
  • 增删改查
  • 增 INSERT

    18348-s90xuuyxc8.png

 <?php
//1.命名参数+关联数组 语义化较强
namespace pdo_edu;
use PDO;
//1.引入数据库配置文件
require 'config/catenate.php';
//2.执行数据库操作语句
// 增删改查
// 1.增 INSERT
// 创建执行语句
// INSERT 表名 SET 字段名=内容
$sql = "INSERT `user_list` SET `name`=:usname, `email` = :email, `age`= :age ";
// 预处理语句
$stmt = $db->prepare($sql);
//插入的数据:bindParam使用引用绑定限制类型
$stmt->bindParam(':usname', $name, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':age', $age, PDO::PARAM_INT);
list($name,$email,$age)=['小白','xiaobai@qq.com',25];
// 执行数据
if($stmt->execute()){
    //lastInsertId():插入成功的ID
    echo '新增成功, id='.$db->lastInsertId() . '<br>';
}else{
    echo '执行失败';
    //打印错误信息
    print_r($stmt->errorInfo());
}
//3.关闭数据库链接
$db = null;
  1. 删除 DELETE

34124-900q36rxcgg.png

<?php
//1.命名参数+关联数组 语义化较强
namespace pdo_edu;
use PDO;
//1.引入数据库配置文件
require 'config/catenate.php';
//2.执行数据库操作语句
// 增删改查
// 3.删 DELETE
// 创建执行语句
// DELETE 表名 SET 字段名=内容
$sql = "DELETE FROM `user_list` where `id`=:id ";
// 预处理语句
$stmt = $db->prepare($sql);
//插入的数据
$data = ['id'=>3];
// 执行数据
if($stmt->execute($data)){
    //rowCount():执行成功的记录数量
    if($stmt->rowCount()){
        echo '删除成功, 有'.$stmt->rowCount() . '已被删除<br>';
    }else{
        echo '没有记录被删除';
    }

}else{
    echo '执行失败';
    //打印错误信息
    print_r($stmt->errorInfo());
}
//3.关闭数据库链接
$db = null;
  • 修改更新UPDATE

03413-hknd2xywjr.png

<?php

namespace pdo_edu;
use PDO;
//1.引入数据库配置文件
require 'config/catenate.php';
//2.执行数据库操作语句
// 增删改查
// 2.改 UPDATE
// 创建执行语句
// UPDATE 表名 SET 字段名=内容 where 条件内容
$sql = "UPDATE `user_list` SET `name`=:name, `email` = :email where `id` = :id";
// 预处理语句
$stmt = $db->prepare($sql);
//更新的数据
$data = ['name'=>'小白','email'=>'xiaobai@qq.com','id'=>7];

if(stripos($sql,'where') === false){
    exit('禁止非法操作无条件更新');
}
// 执行数据
if($stmt->execute($data)){
    //rowCount():执行成功的记录数量
    if($stmt->rowCount()>0){
        echo '修改成功, 有'.$stmt->rowCount() . '条记录被更新<br>';
    }else{
        echo '没有记录被更新';
    }

}else{
    echo '执行失败';
    //打印错误信息
    print_r($stmt->errorInfo());
}

//3.关闭数据库链接
$db = null;
  • 查询 SELECT

34434-fnzs5oetd2k.png

<?php
//1.fetchAll+foreach
namespace pdo_edu;
use PDO;
//1.引入数据库配置文件
require 'config/catenate.php';
//2.执行数据库操作语句
// 增删改查
// 3.查 SELECT
// 创建执行语句
// SELECT 字段名 FROM 表明 where
$sql = "SELECT `id`,`name`,`age`,`email`FROM `user_list` WHERE `age`>20";
// 预处理语句
$stmt = $db->prepare($sql);
// 执行数据

// print_r($arr);
if($stmt->execute()){
   $arr = $stmt->fetchAll(PDO::FETCH_ASSOC);
//    print_r($arr);
   foreach($arr as $v){
      printf('<pre>%s</pre>',print_r($v,true));

   }
}else{
    echo '执行失败';
    //打印错误信息
    print_r($stmt->errorInfo());
}

//3.关闭数据库链接
$db = null;

//-------

///第二种方式
<?php
//1.fetch+while
namespace pdo_edu;
use PDO;
//1.引入数据库配置文件
require 'config/catenate.php';
//2.执行数据库操作语句
// 增删改查
// 3.查 SELECT
// 创建执行语句
// SELECT 字段名 FROM 表明 where
$sql = "SELECT `id`,`name`FROM `user_list` WHERE `id`>0";
// 预处理语句
$stmt = $db->prepare($sql);
// 执行数据

// print_r($arr);
if($stmt->execute()){
    while($arr = $stmt->fetch(PDO::FETCH_ASSOC)){
        print_r($arr);
    }
}else{
    echo '执行失败';
    //打印错误信息
    print_r($stmt->errorInfo());
}

//3.关闭数据库链接
$db = null;
原创文章,作者:huixiang,如若转载,请注明出处:https://www.hui-xiang.cn/archives/199.html
-- 展开阅读全文 --
初学第三十四章:PHP类的自动加载器
« 上一篇 08-17
PHP之文件上传/单文件/多文件
下一篇 » 08-19

相关推荐