2016-10-01 3 views
1

지금 mssql을 사용하여 PHP 7을 사용하기 시작했으며 mssql_에서 sqlsrv_로 sql 함수를 전환해야했습니다. mssql 함수를 사용할 때 mssql_change_db 함수를 사용하여 데이터베이스를 변경하려고했지만이 함수 대신 사용할 대체 함수가 없습니다. 나는이 함수가 모든 쿼리에서 USE [DB]를 사용하여 스스로를 구입할 것이라고 생각했지만 쓸모 없거나 비효율적 인 것으로 보인다. 나는 다른 방법에 대해서 생각해 봤는데, 그것은 더 좋은 것처럼 보인다.
DB_NAME.dbo.table을 모든 테이블 이름 앞에 추가하는 방법에 대해 생각해 보았습니다.
나는 또한 테이블 이름을 찾아 테이블 이름 앞에 ".DBO"로를 automaticly 데이터베이스 이름을 추가하는 방법에 대한 기능을 구축하기 시작했다. (난 그냥 그것을 만들기 시작)
그것은 아직 완료되지 저주의 단지 예입니다 : 여기
내가 지금까지했던 것입니다. , INSERT (INTO), UPDATE 가입에 대한
sqlsrv를 사용하여 데이터베이스를 전환하는 올바른 방법은 무엇입니까?

public function exec($mainQuery, $db = NULL) 
{ 
    if(isset($db)) { 
     $query = $mainQuery; 
     $query = explode('from ', $query); 
     $query = $query[1]; // Getting the rest of the query after the word "Form" 
     if (strpos($query, 'where') !== false) { // Checking if the rest of the query includes the word "Where" 
      $query = explode('where', $query); // Taking the word before the word "Where" 
      $tableName = $query[0]; 
     } 
     else { // The rest of the query is actually the table name, because there is no "Where" in the query 
      $tableName = $query; 
     } 

     $pQuery = str_replace("$tableName", " $db.dbo.$tableName", $mainQuery); // Replacing the table name with the DB.dbo.tablename 

     return sqlsrv_query($this -> sqlHandle, $pQuery); 
    } 
    else { 
     return sqlsrv_query($this -> sqlHandle, $mainQuery); 
    } 
} 


나는 또한 그것을 구축해야한다. 나는 데이터베이스를 전환 할 수있는 더 좋은 방법이 무엇을 물어 이유가,

나는 이유는 모르겠지만, 나는 그것이 그렇게 나쁜 방법입니다 같은 느낌.
미리 감사드립니다.

답변

1

그것은 PHP에서 실행 USE Database를 사용하는 좋지 않은 아이디어 나 쿼리의 몇 가지 방법 변경 데이터베이스입니다 (당신은 DB 이름을 가진 정말 멋진 트릭을했다). 그런 종류의 물건을 저장 프로 시저를 잘 사용하고 PHP에서 호출하십시오. 모든 SP에 기록 된 것을 당신은 무엇 스키마 또는 데이터베이스 테이블이에 대해 생각하지 않아도 경우

.

또 하나의 방법은 모든 사용자에 대해 하나의 기본 데이터베이스를 사용하고, 기본하지 DB에서 테이블을 얻을 필요가있을 때 USE database을 사용하는 것입니다.

+0

감사 나 응답을 위해, 지점, 나는 6 데이터베이스를 사용하고 내 경우에는 "기본 데이터베이스가"이 없다는 것을, 그리고 내가 코딩있어 모든 코드 페이지에 그들 모두를 사용하여, 나는하지 않았다 데이터베이스는 스스로 데이터를 삽입하는 것입니다. 고마워, 나는 내 방식대로 갈거야. – guyshitz

관련 문제