如何通过SQL聚合函数获得增删改的受影响行数?
再做进一步动作前就能够计算出一个查询返回或者影响的行数通常都非常有用,希望分页显示结果或生成统计信息时,这种功能特别方便,那么获取受影响行数的功能是如何实现的呢?
一、通过SQL聚合函数 COUNT统计下旬结果记录数
COUNT 返回一个查询或者部分查询的行数,通常和DINSTINCT一起使用。SQL的聚合函数COUNT 被多种数据库广泛支持!
二、通过 PDOStatement->rowCount()方法返回受影响行数
PDOStatement->rowCount()方法获取到有多少行数被 UPDATE , INSERT 或者 DELECTE查询所影响。rowCount()方法在典型的 PHP应用程序中并不常见,但是它可以统计出在调用PDOStatement->execute后,有多少行受到影响。
三、应用实例
通过SQL 聚合函数COUNT统计查询返回的记录数,其具体代码如下:
<form action="5.php" name="form1" method="post"> 查询关键字:<input type="text" name="username" id="nr"> <input type="submit" name="Submit" value="查询"> </form> <?php header("Content-Type:text/html; charset=utf-8"); //设置页面的编码格式 if(isset($_POST['Submit']) && $_POST['Submit']=="查询") { $dbms = "mysql"; // 数据库的类型 $dbName ="php_cn"; //使用的数据库名称 $user = "root"; //使用的数据库用户名 $pwd = "root"; //使用的数据库密码 $host = "localhost"; //使用的主机名称 $dsn = "$dbms:host=$host;dbname=$dbName"; try { $dbh = new PDO($dsn, $user, $pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT COUNT(*) FROM user WHERE username = :id";//需要执行的sql语句 $stmt = $dbh->prepare($sql);//准备查询语句 $stmt->bindParam(':id', $_POST['nr'], PDO::PARAM_STR); //执行查询语句,并返回结果集 $result = $stmt->execute(); echo 'There are',$stmt->fetchColumn(),'rows returned.'; }catch (PDOException $e){ echo 'PDO Exception Caught.'; echo 'Error with the database:<br>'; echo 'SQL Query:',$sql; echo 'Error:'.$e->getMessage(); } } ?>
运行本实例,在文本框中输入要查询的数据库名称,单击“查询”按钮,即可显示出所查询到的结果行数,如下图:
说明:
在使用UPDATE 和DELETE语句时,一定要随时确定添加了 WHERE子句,如果未添加WHERE子句,则则可能会更新数据库中的所有列或者删除表中的所有数据,无论哪一种情况都不是用户所希望看到的。
以上是如何通过SQL聚合函数获得增删改的受影响行数?的详细内容。更多信息请关注PHP中文网其他相关文章!