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

PHP中的PDO,如何改进这个PDO mysql代码

发布时间:2020-12-13 22:00:01 所属栏目:PHP教程 来源:网络整理
导读:谢谢你检查.所有有用的答案/评论都已经过投票. 我有以下代码,它完成了这项工作,但是imo效率不高.我认为它效率不高的原因是因为我使用fetchAll循环,即使我知道查询将返回1或没有记录. //assume the usual new PDO,binding,and execute are up here$myval = "s
谢谢你检查.所有有用的答案/评论都已经过投票.
我有以下代码,它完成了这项工作,但是imo效率不高.我认为它效率不高的原因是因为我使用fetchAll循环,即使我知道查询将返回1或没有记录.

//assume the usual new PDO,binding,and execute are up here

$myval = "somevalue";

$res = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (!$res) {
    //no record matches
    //BLOCK A CODE HERE
} else { 
    //found matching record (but always going to be 1 record,no more)  
    foreach($res as $row) {
        if ($myval == $row['val']){
            //myval is the same as db
            //BLOCK B CODE HERE
        } else {
            //myval is different from db
            //BLOCK C CODE HERE
        }
    }//foreach
}

如何改进它以消除foreach和fetchAll的庞大外观(考虑到我知道它总是只有1或0记录)?但是我仍然需要类似的检查点,所以我可以执行相同的BLOCK A BLOCK B BLOCK C,因为我当前的逻辑需要它.

解决方法

$myval = "somevalue";

$row = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$row) {
    //no record matches
    //BLOCK A CODE HERE
} else if ($myval == $row['val']) { 
    //myval is the same as db
    //BLOCK B CODE HERE
} else {
    //myval is different from db
    //BLOCK C CODE HERE
}

(编辑:李大同)

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

    推荐文章
      热点阅读