PDO进行sql报表编制结果集介绍及操作(两)

<span style="font-size:18px;">一个:运行准备好的语句和绑定参数insert

try {
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
    }catch(PDOException $e){
        echo $e->getMessage();
    }

    /* pdo中有两种占位符号
     *
     *  ? 參数             --- 索引数组。 按索引顺序使用
     *  名字參数           ----关联数组。 按名称使用,和顺序无关
     */

    $stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(?

, ?, ?, ?)"); //全部SQL都可运行

    //准备好了一条语句。并入到server端,也已经编译过来了,就差为它分配数据过来
//    $stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(:name,:price, :num, :desn)");

    //绑定名字參数   顺序能够不一致和名字相应就可以
/*    $stmt->bindParam(":name", $name);
    $stmt->bindParam(":num", $num);
    $stmt->bindParam(":desn", $desn);
    $stmt->bindParam(":price", $p);
 */
    ////绑定  问好?參数---得按顺序绑定
    $stmt->bindParam(1, $name, PDO::PARAM_STR);//第3个參数是数据类型可不用写,会自己主动找类型
    $stmt->bindParam(3, $num, PDO::PARAM_INT);
    $stmt->bindParam(4, $desn, PDO::PARAM_STR);
    $stmt->bindParam(2, $p, PDO::PARAM_STR);

    $name="wwww1";
    $num=101;
    $desn="hello1";
    $p=34.51;

    if($stmt->execute()){
        echo "运行成功";
        echo "最后插入的ID:".$pdo->lastInsertId();
    }else{
        echo "运行失败!

";
    }

    //多次插入------------想运行多次。。

。

N次,传值就可以
    $name="wwww1";
    $num=101;
    $desn="hello1";
    $p=34.51;

    if($stmt->execute()){
        echo "运行成功";
        echo "最后插入的ID:".$pdo->lastInsertId();
    }else{
        echo "运行失败!";

    }

二:预处理语句UPDATE

try {
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
    }catch(PDOException $e){
        echo $e->getMessage();
    }

    /* pdo中有两种占位符号
     *
     *  ? 參数             --- 索引数组, 按索引顺序使用
     *  名字參数           ----关联数组。 按名称使用。和顺序无关
     */

    //准备好了一条语句,并入到server端,也已经编译过来了。就差为它分配数据过来
    //$stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(?, ?, ?, ?

)"); //全部SQL都可运行

    //update和insert一样
    $stmt=$pdo->prepare("update shop set name=:name,num=:num,price=:price,desn=:desn where id=:id"); //全部SQL都可运行

    //绑定名字參数   顺序能够不一致和名字相应就可以
    $stmt->bindParam(":name", $name);
    $stmt->bindParam(":num", $num);
    $stmt->bindParam(":desn", $desn);
    $stmt->bindParam(":price", $p);//变量名字随便写
    $stmt->bindParam(":id", $id);

    $name="nnn";
    $num=101;
    $desn="hello1";
    $p=34.51;
    $id=108;

    if($stmt->execute()){
        echo "运行成功";
        //echo "最后插入的ID:".$pdo->lastInsertId();
    }else{
        echo "运行失败!

";
    }

    //接着传值运行第二次-----N次,这就是PDO预处理,仅仅会编译一次SQL,其它想运行传值就能够
    $name="mmm";
    $num=101;
    $desn="hello1";
    $p=34.51;
    $id=109;

    if($stmt->execute()){
        echo "运行成功";
    }else{
        echo "运行失败。";
    }

三:预处理插入多条

try {
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
    }catch(PDOException $e){
        echo $e->getMessage();
    }

    /* pdo中有两种占位符号
     *
     *  ? 參数             --- 索引数组。 按索引顺序使用
     *  名子參数           ----关联数组, 按名称使用,和顺序无关
     */

    $stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(?, ?

, ?, ?)"); //全部SQL都可运行--syi===

    //准备好了一条语句,并入到server端。也已经编译过来了。就差为它分配数据过来
//    $stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(:name,:price, :num, :desn)");

    //绑定參数
/*    $stmt->bindParam(":name", $name);
    $stmt->bindParam(":num", $num);
    $stmt->bindParam(":desn", $desn);
    $stmt->bindParam(":price", $p);
 */
    //绑定參数
    $stmt->bindParam(1, $name, PDO::PARAM_STR);
    $stmt->bindParam(3, $num, PDO::PARAM_INT);
    $stmt->bindParam(4, $desn, PDO::PARAM_STR);
    $stmt->bindParam(2, $p, PDO::PARAM_STR);

    $name="wwww1";
    $num=101;
    $desn="hello1";
    $p=34.51;

    if($stmt->execute()){
        echo "运行成功";
        echo "最后插入的ID:".$pdo->lastInsertId();
    }else{
        echo "运行失败!";
    }

    $name="ooo";
    $num=101;
    $desn="hello1";
    $p=34.51;

    if($stmt->execute()){
        echo "运行成功";
        echo "最后插入的ID:".$pdo->lastInsertId();
    }else{
        echo "运行失败!";
    }

    四:不绑定參数。直接execute中带值运行sql

    try {
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
    }catch(PDOException $e){
        echo $e->getMessage();
    }

    /* pdo中有两种占位符号
     *
     *  ?

參数             --- 索引数组, 按索引顺序使用
     *  名子參数           ----关联数组, 按名称使用。和顺序无关
     */

    //准备好了一条语句,并入到server端,也已经编译过来了,就差为它分配数据过来
    $stmt=$pdo->prepare("insert into shops(name, price, num, desn) values(:name,:price, :num, :desn)");

    //    $stmt->execute($_POST);
    //传值是能够不按顺序--这是名字參数
    $stmt->execute(array(":price"=>99, ":name"=>"kkk1", ":num"=>"451", ":desn"=>"aaaaaa1"));
    $stmt->execute(array(":price"=>88, ":name"=>"kkk2", ":num"=>"452", ":desn"=>"aaaaaa2"));
    $stmt->execute(array(":price"=>77, ":name"=>"kkk3", ":num"=>"453", ":desn"=>"aaaaaa3"));

五:获取结果集

try {
        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");
    }catch(PDOException $e){
        echo $e->getMessage();
    }

    //获取结果   fetch()取一条--返回的是关联和索引数组一起返回
    //获取结果   fetchAll();  得到得是二维数组

    $stmt=$pdo->prepare("select id, name, price, num, desn from shops where id > :id order by id");

    $stmt->execute(array(":id"=>100));   //假设预SQL没有參数时,execute也不用带參数 直接问运行就能够

    $stmt->setFetchMode(PDO::FETCH_ASSOC);//设置全部的获取模式,全部是关联数组,以下就不用改啦,也能够卸载fetch里面(PDO::FETCH_ASSOC),不写就是默认的类型关联和索引都返回
/*
    while($row=$stmt->fetch()){//获取全部查出来的值  循环
        print_r($row);
        echo '<br>';
    }
 */
  /*
    $row=$stmt->fetch(PDO::FETCH_ASSOC);获取关联数组
    $row=$stmt->fetch(PDO::FETCH_NUM);  获取索引数组
    $row=$stmt->fetch(PDO::FETCH_BOTH); 关联和索引都返回--默认就是这个
    print_r($row);
  */
    $data=$stmt->fetchAll(PDO::FETCH_ASSOC); //同上,也能够直接$stmt->setFetchMode(PDO::FETCH_ASSOC);这么设置

    echo '<pre>';
    print_r($data);
    echo '</pre>';</span>

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-07-29 07:46:03

PDO进行sql报表编制结果集介绍及操作(两)的相关文章

php 函数集介绍

php源代码之函数集介绍 array_change_key_case — 返回字符串键名全为小写或大写的数组 array_chunk — 将一个数组分割成多个 array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_count_values — 统计数组中所有的值出现的次数 array_diff_assoc — 带索引检查计算数组的差集 array_diff_key — 使用键名比较计算数组的差集 array_diff_uassoc — 用用户

SQL中的ISNULL函数介绍

SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISNULL ( check_expression , replacement_value ) 参数check_expression 将被检查是否为 NULL的表达式.check_expression 可以是任何类型的. replacement_value 在 check_expression 为 NUL

(转)SQL中的ISNULL函数介绍

SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISNULL ( check_expression , replacement_value ) 参数check_expression 将被检查是否为 NULL的表达式.check_expression 可以是任何类型的. replacement_value 在 check_expression 为 NUL

SQL Server 2014 各版本介绍

SQL Server 2014 各版本介绍 目前,SQL Server 2014 分为主要版本和专业版. 在选择版本的时候可以根据您具体的需要进行抉择,如果你需要一个免费的数据库管理系统,那么就选择 Compact 版本或 Express 版本:如果不确定你要使用什么版本的话也可以下载一个试用版,SQL Server 2014 试用版的免费使用时间为180天. 版本 主要版本 SQL Server 2014 的三个主要版如下: 企业版 考虑保费发售,企业版的目的是向大规模数据中心和数据仓库解决方

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

SQL Server系统表sysobjects介绍与使用

原文:SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可以一个一个地检查表格,但是如果你有500个表格的话,这可能会消耗相当大的人工. 这就让sysobjects表格有了用武之地.虽然我不建议你更新这个表格,但是你当然有权对其进行审查. sysobjects 表 在数据库内创建的每个对象(约

使用hibernate原生sql查询,结果集全为1的问题解决

问题如下: String sqlTest ="select summary,summaryno from F_Summary"; List<Map<Object, Object>> listTest = this.getService().getListBySql(sqlTest); for (Map<Object, Object> m : listTest) { for (Object k : m.keySet()) { System.out.pr

SQL结构化查询语言分类介绍

SQL结构化查询语言分类介绍 SQL:结构化查询语言,它是一种对关系型数据进行定义和操作的语言方法. SQL结构化查询语言包含6个部分: 一.数据查询语言(DQL) DQL全称Data Query Language,其语句也称"数据检索语句",作用是从表中获取数据,确定数据怎样在应用程序给出.关键字SELECT是DQL(也是所有SQL)用的最多的动词,其他DQL常用的保留字WHERE,ORDER BY,GROUP BY和HAVING.这些DQL保留字常与其他类型的SQL语句一起使用.

SQL Server系统表sysobjects介绍与使用(转)

SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可以一个一个地检查表格,但是如果你有500个表格的话,这可能会消耗相当大的人工. 这就让sysobjects表格有了用武之地.虽然我不建议你更新这个表格,但是你当然有权对其进行审查. sysobjects 表  在数据库内创建的每个对象(约束.