php
  • sql
  • 2012-03-07 57 views 0 likes 
    0

    为了不保存已经存在于舞台中的用户,我在查询中使用了以下IF NOT EXISTS语句。如果在保存函数中不存在导致错误

    public function save() { 
        // new record 
        if ($this->id == null) { 
         $query = "IF NOT EXISTS(SELECT * FROM Table_A WHERE user_id ='{$this->user_id}' and stage_id = '{$this->stage_id}') INSERT INTO Table_A(". 
          'id, '. 
          'user_id, '. 
          'stage_id, '. 
          'create_date '. 
          ') OUTPUT inserted.id '. 
          'VALUES ('. 
           'newid(), '. 
           '%s, '. 
           '%s, '. 
           'getdate()'. 
         ')'; 
    
    $rs = $this->db->Execute($query); 
    
         if ($rs->EOF) { 
          return false; 
         } 
    
         $rs->Close(); 
    } 
    

    ..它做这项工作,但是当用户确实存在它抛出这个错误:

    PHP致命错误:未捕获的异常“发出com_exception”有消息“来源: ADODB.Recordset
    描述:当对象关闭时不允许操作。'

    不知道处理这个问题的最佳方法是,任何帮助表示赞赏,谢谢!

    回答

    1

    由于您关闭了记录集$rs->Close();,因此不允许从记录集中读取下一个数据。你可以return $rs;,当你得到你的数据后关闭它。

    相关问题