Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

안녕하세요.

SELECT MAX(num) AS last_num FROM rx_test

 

rx_test 테이블의 num이 가장 높은 값을 가져와서 변수값에 추가 하고싶습니다.

이런 쿼리 애드온이나 위젯 외부페이지 레이아웃에서는 사용했었는데

모듈에서는 어떤방식으로 사용해야할까요?

 

감사드립니다.

  • ?
    $oDB = \DB::getInstance();
    $result = $oDB->query('SELECT MAX(`num`) AS `last_num` FROM `test`;');
    $data = $oDB->fetch($result);
    $last_num = $data->last_num;

    그러나 작성자님이 원하신 것은 아마도 아래 코드 같습니다.

    $oDB = \DB::getInstance();
    $last_num = $oDB->getInsertID();
  • ? profile
    답변감사합니다.
    꼭 xml 로 안해도 모듈에서도 쿼리를 날릴 수 있나보네요.

    xml 로 하고
    function 로 MaxNum 넣어주고 아무리 해도 안되서ㅠㅠ
    위방법으로 해보겠습니다.

    감사합니다
  • ? profile
    앗 오히려 글쓰기 스킨에서 쿼리 그대로 날리니 바로 작동하네요! ㅎㅎ 잘해결되었습니다. 감사합니다.
  • profile

    $oDB->fetch()는 XE와 최소한의 호환성을 유지하기 위해 존재하는 메소드로, 데이터의 갯수에 따라 반환값 타입이 달라지기 때문에 유지보수나 코드 재사용시 버그 발생 확률이 높아집니다. 특정한 상황에서 코드가 좀더 간결해지긴 하지만, 그래도 신규 자료나 예제 코드에서는 사용하지 않는 것을 추천합니다.

     

    ($result를 받아왔는데 이걸 또 $oDB에 넘긴다는 것 자체가 OOP 도입 이전 90년대식 코딩 스타일입니다. $result를 받아왔으면 $result에다가 메소드를 호출해야지요.)

     

    라이믹스 2.x의 DB 관련 기능들은 순정 PHP의 PDO를 확장한 것이므로, 커스텀 쿼리를 사용하더라도 PDO 방식 그대로 $result->fetchObject()->last_num, $result->fetchAll()[0]->last_num, $result->fetchColumn() 등으로 결과에 접근하면 됩니다.

  • profile profile

    $result->fetchColumn(); 로수정했습니다.

    감사합니다.