sqlite 使用PDO执行SQL语句exec()、query()

时间:2023年10月07日

/

来源:网络

/

编辑:佚名

在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()方法来执行。
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。