PDOStatement 预处理对象的使用

一  插入数据   问号占位符形式绑定参数

try {
    //1 先发送一条SQL语句让服务器去编译 值用问号代替 并返回一个预处理对象 赋值给$stmt
    $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (?,?)');
    var_dump($stmt);

    //2 绑定参数 对应的是问号写法 从1开始 只能绑定到变量名
    $stmt->bindParam(1,$ftitle);
    $stmt->bindParam(2,$author);

    //3 给变量赋值
    $ftitle = '孙权';
    $author = '孙仲谋';

    //4 执行一条预处理SQL
    $stmt->execute();

    //再插入一条
    $ftitle = '诸葛亮';
    $author = "诸葛孔明";
    $stmt->execute();
} catch (PDOException $e) {
    echo $e->getMessage();
}
//简洁写法
try {
    //1定义一条 问号 占位符的预处理语句SQL
    $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (?,?)');
    //2 绑定和执行一起操作  问号占位符传递索引数组
    $stmt->execute(['汉武帝','刘彻']);
} catch(PDOException $e) {
    echo $e->getMessage();
}

插入数据:命名占位符形式绑定参数

//常规写法
try {
    //1定义一条 命名 占位符的预处理语句SQL
    $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (:ftitle,:author)');

    //2 绑定参数到变量
    $stmt->bindParam(':ftitle',$ftitle);
    $stmt->bindParam(':author',$author);

    //3 给变量赋值
    $ftitle = '胡汉三';
    $author = "刘三姐";

    //4 执行预处理SQL语句
    $stmt->execute();

} catch(PDOException $e) {
    echo $e->getMessage();
}
//简洁写法
try {
    //1定义一条命名占位符的预处理语句SQL
    $stmt = $pdo->prepare('insert into yunu_diy_article(ftitle,author) value (:ftitle,:author)');
    //2 绑定和执行一起操作  命名占位符 传递关联数组
    $stmt->execute([':ftitle'=>'汉武帝',':author'=>'刘彻']);
} catch(PDOException $e) {
    echo $e->getMessage();
}

 二  删除数据

try {
    //删除操作  命名占位符
    $stmt = $pdo->prepare('delete from yunu_diy_article where conid = :num ');
    $stmt->execute(['num' =>67]);

    //删除操作 问号占位符
    $stmt = $pdo->prepare('delete from yunu_diy_article where conid = ?');
    $stmt->execute([65]);//删除id为65的一行数据
    
} catch(PDOException $e) {
    echo $e->getMessage();
}

 三  更新操作

try {
    //更新操作 命名占位符
    $stmt = $pdo->prepare('update yunu_diy_article set ftitle=:ftitle,author=:author where conid = :num ');
    $stmt->execute([':ftitle' =>'猪八戒',':author'=>'天蓬元帅',':num'=>66]);

    //更新操作 问号占位符
    $stmt = $pdo->prepare('update yunu_diy_article set ftitle=?,author=? where conid=?');
    $stmt->execute(['孙悟空','齐天大圣',66]);
} catch(PDOException $e) {
    echo $e->getMessage();
}

 四  查询操作

try {
    //1 准备SQL语句 并得到预处理对象
    $stmt = $pdo->prepare('select ftitle,author from yunu_diy_article');
    //2 执行预处理语句 结果集已经放回给$stmt
    $stmt->execute();//执行完成后 就获得了一个结果集 结果集就存放在$stmt对象上
    //3 获取结果集中的一行 或者 全部
    $result = $stmt->fetch(PDO::FETCH_OBJ);//获取结果集中的一行数据   第一个参数设置返回值的格式
    $result = $stmt->fetchAll(PDO::FETCH_OBJ);//获取结果集中的所有数据
    //fetch / fetchAll(参数1:设置结果集的提取模式) 常用的有四种
    //1. PDO::FETCH_BOTH 默认的   返回格式:关联数组+索引数组
    //2. PDO::FETCH_ASSOC 返回格式:关联数组
    //3. PDO::FETCH_NUM  返回格式:索引数组
    //4. PDO::FETCH_OBJ   返回格式:对象形式
    var_dump($result);
} catch(PDOException $e) {
    echo $e->getMessage();
}

查询数据:绑定列

try {
    //1 准备SQL语句 并得到预处理对象
    $stmt = $pdo->prepare('select ftitle,author from yunu_diy_article');
    //2 执行预处理语句 结果集已经放回给$stmt
    $stmt->execute();//执行完成后 就获得了一个结果集 结果集就存放在$stmt对象上
    //3 绑定列
    $stmt->bindColumn('ftitle',$ftitle);
    $stmt->bindColumn('author',$author);
    while ($stmt->fetch()) {
        echo $ftitle .'的作者是:'. $author.'</br>';
    }
} catch(PDOException $e) {
    echo $e->getMessage();
}

 

posted @ 2020-10-23 09:22  棉花糖88  阅读(145)  评论(0编辑  收藏  举报