2014-11-04 5 views
0

PHP ADOdb에서 테이블을 확인하는 방법은 독립/알 수없는 DB 시스템 용입니까?ADOdb 테이블 존재 여부 확인 PHP

일부 DB 시스템과 관련된 몇 가지 해결책이 있지만 PHP ADOdb에서 작동하는 솔루션이 필요합니다. 나는 INFORMATION.SCHEMA에 의존와 같은, 등 수 없습니다 ADOdb의를 사용하여

:

SELECT * 
FROM information_schema.tables 
WHERE table_schema = 'db' 
AND table_name = 'tablename' 
LIMIT 1; 

그들은 모두 DB 별, 그리고 오류의 원인 쿼리처럼, 또한 적용되지 않기 때문에 :

SELECT 1 FROM 'testtable' LIMIT 1; 

적어도 내 경우에는 침묵 오류가 발생하기 때문에 다른 DB 시스템에서 동작을 예측할 수 없기 때문입니다.

답변

0

해결 방법을 찾는 데 몇 시간이 걸렸습니다. 여기서 $oADOdbCon은 초기화 된 "데이터베이스를 사용할 준비가되었습니다"연결입니다.

$rs = $oADOdbCon->execute("SHOW TABLES LIKE 'tablename';"); 

if ($rs->RecordCount() == 1) { 
    // do something 
} 

어떤 경우에는 한 번에 테이블 세트의 가용성을 확인, 혹은 다소 확장 SHOW TABLES functionallity을 확인, 여기에 편리한 올 것이다 와일드 카드 연산자 % 그래서 위에서 같은 쿼리 수, 편리 제공 에 고쳐 수 :이 경우뿐만 아니라 테이블 'TABLENAME'에서

$rs = $oADOdbCon->execute("SHOW TABLES LIKE '%tablename%';"); 

를 찾을 수 있지만 또한 'a_tablename'또는 'some_tablename_s'같은 모든 그것의 이름 형제.

if ($rs->RecordCount() >= 1) { 
    // do something 
} 

와 테이블을보기 위해 :

while (!$rs->EOF) { 
    print $rs->fields[0] . '<BR>'; 
    $rs->MoveNext(); 
} 
따라서 검사 계정에 여러 결과의 가능성을 가지고있다