2010-04-08 3 views
0

우리는 이렇게하려고했지만 약간의 오류가 있습니다. 우리의 테이블 이름은 사용자와 메시지입니다.

<?php 

class Application_Model_childconnect1 extends Zend_Db_Table_Abstract 
{ 
    protected $_name = 'users'; 

    public function loginvalidation($username,$pwd) 
    { 


     $row = $this->fetchRow('UserName = \'' . $username . '\'and UserPW = \''. $pwd . '\''); 
     if (!$row) 
     { 
      $msg="invalid"; 
      return $msg; 
     } 
     else 
     { 
      return $row->toArray(); 
     } 

    } 

    protected $_name = 'messages'; 

    public function replymessage($message) 
     { 

     $data=array(
      'MessageText'=>$message 
      ); 
     $this->insert($data); 
     } 


} 

답변

1

Zend_Db_Table는 정의

데이터베이스 테이블에 대한 게이트웨이 역할을하는 대상인 Table Data Gateway이다. 하나의 인스턴스가 테이블의 모든 행을 처리합니다.

이는 테이블 당 하나의 클래스를 가지며 클래스 당 여러 개의 이름을 가질 수 없다는 것을 의미합니다. 젠드 프레임 워크 참조 설명서를 참조하십시오 제대로 사용하는 방법을 배울 수 있습니다 : 당신이 설치 프로그램을 시작하지만 당신이 가지고있는

+0

감사합니다.하지만 많은 테이블이있는 경우 매우 어려운 작업이 될 것입니다. 그 해결책은 무엇입니까? 답장하십시오. – karthik

+0

@karthik 글쎄, 누가 프로그래밍이 쉽다고 말했어? 테이블 데이터 게이트웨이, 행 데이터 게이트웨이, 활성 레코드 및 데이터 매퍼의 네 가지 공통 데이터 소스 아키텍처 패턴에 대해 알아볼 것을 권장합니다. http://martinfowler.com/eaaCatalog/index.html을 참조하십시오. 일단 이해했다면 그들 중 하나와 함께 가거나 Doctrine이나 Propel과 같은 ORM을 사용할 것을 고려하십시오. 또는 Zend_Db를 사용하고 모든 쿼리를 수작업으로 만드십시오. – Gordon

0

응용 프로그램, 당신은 인증을 처리하는 Zend Auth을 사용하여 조사 할 수 있습니다 .

ZF를 일반적으로 사용하려는 경우가 아니라면 Zend_Db_Select 클래스를 활용하면 도움이 될 수 있습니다.

<?php 
public function loginvalidation($username,$pwd) 
{ 
    $s = $this->select(); 
    $s->where('UserNmae = ?',$username) 
    $s->where('UserPW = ?',$pwd); 

    $rowset = $this->fetchall($s); 
    if(count($rowset) == 1) 
    { 
    return $row->current()->toArray(); 
    } else { 
    return "Invalid" 
    } 
} 

정말 손으로 SQL을 생성하고 싶다면 그렇게 할 수도 있습니다. 쿼리 메서드를 Zend_Db_Adapter 개체로 사용하면됩니다.

<?php 
public function loginvalidation($username,$pwd) 
{ 
    $rowset = $this->getAdapter()->query('UserName = \'' . $username . '\'and UserPW = \''. $pwd . '\''); 
    if(count($rowset) == 1) 
    { 
    return $row->current()->toArray(); 
    } else { 
    return "Invalid" 
    } 
} 
+1

OP와 관련하여 * 설치되어있는 것처럼 애플리케이션을 설정할 수 있습니다. 설치 방법이 올바르지 않습니다. 또한 TDG가 작동하는 방식도 아니며 PHP가 클래스의 속성 이름을 다시 선언 할 수도 없습니다. 또한 DB 어댑터에서 쿼리하는 SQL은 유효하지 않습니다. 또한, 그것은'fetchAll'이어야하고 메소드 이름은 ZF 규칙에 따라 camelCased 여야합니다. – Gordon

관련 문제