加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 如何在PDO中获取查询语句的类型?

发布时间:2020-12-11 23:42:55 所属栏目:MySql教程 来源:网络整理
导读:在MySQL Reference Manual中,数据定义语句和数据操作语句之间存在区别. 现在我想知道查询是插入数据库记录,更新一个,删除一个还是修改表结构等,或者更准确地说,是受影响行的确切数量,但前提是它是否适用. 例如,声明 SELECT *FROM SomeTableWHERE id=1 OR id=

在MySQL Reference Manual中,数据定义语句和数据操作语句之间存在区别.

现在我想知道查询是插入数据库记录,更新一个,删除一个还是修改表结构等,或者更准确地说,是受影响行的确切数量,但前提是它是否适用.

例如,声明

SELECT *
FROM SomeTable
WHERE id=1 OR id=2

返回一些受影响的行(在本例中为2),但是使用SELECT语句,数据库中没有任何修改,因此该数字将为0.

如何获得查询类型?

最佳答案 我正在寻找相同的答案,偶然发现了this article.它最后一次更新是在八月份.在其中,有一节:“确定声明的类型”您基本上可以做出以下假设:(从文章中复制)

>如果columnCount()为零,则该语句不会生成结果集.相反,它修改了行,您可以调用rowCount()来确定受影响的行数.
>如果columnCount()大于零,则语句生成结果集,您可以获取行.要确定有多少行,请在获取它们时对它们进行计数.

我将为您省去麻烦,只需在此处粘贴代码示例即可

$sth = $dbh->prepare ($stmt);
$sth->execute ();
if ($sth->columnCount () == 0)
{
    # there is no result set,so the statement modifies rows
     printf ("Number of rows affected: %dn",$sth->rowCount ());
}
else
{
    # there is a result set
    printf ("Number of columns in result set: %dn",$sth->columnCount ());
    $count = 0;
    while ($row = $sth->fetch (PDO::FETCH_NUM))
    {
    # display column values separated by commas
       print (join (",",$row) . "n");
       $count++;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读