分享

使用Zend Framework时使用自己的sql语句(主要是delete与insert的使用方法)

 star_xiong 2014-04-02

       由于自己在使用Zend Framework开发时,喜欢用自己写的sql,而不太喜欢用Zend Framework提供的现成方法来实现数据库的操作,因为个人感觉用框架所提供的方法来进行一些数据库操作的话,在维护sql方面也就有很多不便之处 (由其是复杂的sql查询),而在网上也看到很多人提出关于使用常规sql语句的方法,在此将个人在程序里是如何使用常规的sql的一段代码粘贴出来,希望对初用Zend Framework又想用常规sql语句的人能够有所帮助.

       此段代码是个人项目application/module/User.class.php login方法里的一段代码(在网上看到很多人用Zend Framework开发时将数据库逻辑处理放在了Controller的Action里,个人感觉如果这么使用的话虽然能行的通,但是对用框架并没有最基本的理解,因为Zend Framework的Controller与struts里的Controller一样,都只是付责请求数据的收集与分发,如果将数据库的逻辑处理放到 Controller的Action里也就没有了真正的MVC的用法,所以建议使用zend Framework的开发者一定要将数据库的处理逻辑放在application/mobile/目录下的类里).

$sql = "update ".$this->_db_config->database_prefix->table_prefix."member_info set lastloginip = '".$_SERVER['REMOTE_ADDR']."', lastlogintime = ".(int)$lastLoginTime.", logintimes = logintimes + 1 where userid = ".$result[0]['userid'];
        $rownum = $this->_dbAdapter->query($sql)->rowCount();
       
        if ((int)$rownum !== 1) {
        return false;
        }
       
        $sql = "select count(sessionid) as num, sessionid from ".$this->_db_config->database_prefix->table_prefix."session where userid = ".(int)$result[0]['userid'];
        $result_session = $this->_dbAdapter->fetchAll($sql);
        if ((int)$result_session[0]['num'] >= 1) {
            $sql = "delete from ".$this->_db_config->database_prefix->table_prefix."session where sessionid = '".$result_session[0]['sessionid']."' and userid = ".(int)$result[0]['userid'];
            $rownum = $this->_dbAdapter->query($sql)->rowCount();
           
            if ((int)$rownum === 0) {
                unset($sql);
                unset($rownum);
            return false;
            }          
        }
       
        $sql = "insert into ".$this->_db_config->database_prefix->table_prefix."session values ('".md5($username)."', ".(int)$result[0]['userid'].", '".$_SERVER['REMOTE_ADDR']."', ".$lastLoginTime.", ".(int)$result[0]['groupid'].", 'phpcms', 0, 0, '')";
        $rownum = $this->_dbAdapter->query($sql)->rowCount();
       
        if ((int)$rownum === 0) {
         unset($sql);
         unset($rownum);
         return false;
        }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多