2011-08-25 5 views
1

나는 수정할 시간이나 예산이 없다는 체계적인 문제가 있으며 임박한 운명에서 내 작은 세상을 구할 수있는 MySQL 해킹이 있었으면 좋겠다.MySQL - 데이터베이스 이름에 별명을 지정 하시겠습니까?

현재 관리하고있는 시스템을 만든 사람은 데이터베이스 이름에 문자, 숫자 및 밑줄 이외의 문자가 포함될 수 있음을 알지 못했습니다. 결과 쿼리는 다음과 같습니다.

SELECT * FROM {$db}.settings 

데이터베이스 이름에 표준이 아닌 ... 대시와 같은 것이 포함되어있는 경우. 세계가 끝나고 모든 쿼리가 중단됩니다.

이 시스템에는 사용되었지만 이제는 다중 사이트 기능이 실행되기 때문에 db 접두사가 있습니다. 당신은 내가 ..와 함께이 문제를 해결할 수 있다고 생각

$db = "`{$db}`"; 

경우에만 .. 당신이 업데이트되는 사이트의 추적이 데이터베이스 이름 주위에 전송하는 자바 스크립트 기능의 부하를 밝혀 참조하십시오. 이 따옴표를 추가하면, 그것은 점점 databasename을 얻는 등 대신에 모든 휴식 난 그냥 호환 ..이 시스템의 선박 무언가에 데이터베이스 이름을 설정하지 않는 이유

`databasename` 

그래서 ... 나는 데이터베이스 이름을 통제 할 수없는 외부 서버 ...에

고통 ...

는 모든 후속 쿼리에 영향을 미칠 것이다 예비 쿼리에서 데이터베이스 이름을 별칭 수있는 방법이 있나요. 기본적으로 상수를 설정합니까?

다음과 같은 내용은 모든 후속 쿼리에서 작동합니다. 같은 뭔가 :

set `$db` AS database 

난 그냥 데이터베이스에 $의 DB 변수를 설정하고이 가능한 경우는 .. 실행해야합니까? 당신은 하나 개의 데이터베이스 (데이터베이스에 연결 한 후 $의 DB가 변경되지 않음) 항상 작동 할 경우

답변

0

내가 좋아하는 뭔가를 사용하여 쿼리를 해결하는 것입니다. 특히 sed-i 옵션에 접미사가 필요한지 확인하십시오.

0

, 그럼 그냥 문제를

USE `$db`; 

모든 쿼리의 {$db}. 접두사를 제거을 연결 한 후. USE 쿼리는 현재 연결의 향후 쿼리에 대한 활성 (기본) 데이터베이스를 설정합니다.

당신이 사용하는 프로그래밍 언어를 말하지 않았으므로 PHP로 가정합니다. 일반적으로 연결을 설정하는 동안 기본 데이터베이스를 설정할 수 있습니다 (mysqli_connect(), $dbname parameter). 또한 연결 한 후에 전화 할 수있는 mysqli_select_db()과 같은 기능이있을 수 있습니다. 이 5 월 엉망 때문에 많은, 첫 번째 테스트를 위해 큰 경고

sed -e "s/{\$db}/\`{\$db}\`/g" -i * */* */*/* */*/*/* 

:

관련 문제