在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()方法来执行。
原文:http://www.cnblogs.com/xs-yqz/p/5127224.html