zoukankan      html  css  js  c++  java
  • 使用PDO执行SQL语句exec()、query()

    在PHP脚本中,通过PDO执行SQL查询与数据库进行交互,可以分为三种不同的策略,使用哪一种方法取决于你要做什么操作。

    1、使用PDO::exec()方法

    当执行INSERT、UPDATE和DELETE等没有结果集的查询时,使用PDO对象中的exec()方法去执行。该方法成功执行后,将返回受影响的行数。注意,该方法不能用于SELECT查询。示例如下所示:

    <?php 
        try {
            $pdo = new PDO ('mysql:host=localhost;dbname=testdb','root','123');
            $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            $pdo->exec('set names "utf8"');
        } catch (PDOException $e) {
            exit("数据库连接失败: ".$e -> getMessage());
        }
    
        $sql = "UPDATE contactInfo SET phone='15801680168' where name='高某某'";
    
        //使用exec()方法可以执行INSERT、UPDATE、DELETE等
    
        $affected = $pdo->exec($sql);
    
        if ($affected) {
            echo "数据表中受影响的行数为: ".$affected;
        } else {
            print_r($pdo->errorInfo());
        }
        
     ?>

    2、使用PDO::query()方法

    当执行返回结果集的SELECT查询时,或者所影响的行数无关紧要时,应当使用PDO对象中的query()方法。如果该方法成功执行指定的查询,则返回一个PDOStatement对象。如果使用了query()方法,并想了解获取的数据行总数,可以使用PDOStatement对象中的rowCount()方法获取。示例代码如下所示:

     <?php  
         try {
            $pdo = new PDO ('mysql:host=localhost;dbname=testdb','root','123');
            $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            $pdo->exec('set names "utf8"');
        } catch (PDOException $e) {
            exit("数据库连接失败: ".$e -> getMessage());
        }
        $sql = "SELECT name, phone, email FROM contactInfo WHERE departmentId='D01'";
        try {
            //执行SELECT查询,并返回PDOstatement对象  
            $pdostatement = $pdo->query("$sql");
            echo "一共从表中获取到".$pdostatement->rowCount()."条记录:n";
            //利用循环输出
            foreach ($pdostatement as $row) {
                echo $row['name'] . "t";           //输出从表中获取到的联系人的名字
                echo $row['phone'] . "t";       //输出从表中获取到的联系人的电话
                echo $row['email'] . "n";       //输出从表中获取到的联系人的电子邮件
            }
        } catch (PDOException $e) {
            echo $e->getMessage(); 
        }
     ?>

    3、使用PDO::prepare()和PDOStatement::execute()两个方法

    当同一个查询需要多次执行时(有时需要迭代传入不同的列值),使用预处理语句的方式来实现效率会更高。使用预处理语句就需要使用PDO对象中的prepare()方法去准备一个将要执行的查询,再使用PDOStatement对象中的execute()方法来执行。

  • 相关阅读:
    史上最全常用正则表达式大全
    JAVA中不要用e.printStackTrace()
    JAVA中不要用e.printStackTrace()
    为什么尽量不用e.printStackTrace
    java返回集合为null还是空集合以及空集合的三种写法
    IntelliJ IDEA使用技巧——常用快捷键Mac篇
    [php] 使用laravel-modules模块化开发
    [php] 解决laravel: production.ERROR: No application encryption key has been specified
    [gitlab] 解决:remote: Ask a project Owner or Maintainer to create a default branch:
    [composer] composer 安装配置laravel 8
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/5127224.html
Copyright © 2011-2022 走看看