2011-08-17 4 views
0

MySQL에서 생성 할 때 테이블 이름을 정의해야합니다. 첫 번째 부분은 정의 된 접두사이고 마지막 부분은 내 테이블 이름입니다. 두 변수를 모두 유지하기 위해 추가 변수를 작성하지 않으려합니다. 그들을 내 쿼리에 전달합니다.MySql 테이블 이름 연결

내 코드가 클래스에 포함되어 있고 테이블 이름이 private static 인 변수를 정의했지만 코드가 유효하지만 작동하지 않습니다.

이것은 내가 지금까지 시도한 것입니다 :

CREATE TABLE '$wpdb->prefix.self::$table'  // doesn't work 
CREATE TABLE self::$table      // doesn't work 
CREATE TABLE $wpdb->prefix     // works 
CREATE TABLE {$wpdb->prefix.self::$table}  // error 
CREATE TABLE $wpdb->prefix.self::$table  // just stupid 

$tableName = $wpdb->prefix.self::$table; 
CREATE TABLE $tableName      // works 

는 아무도 나에게 지식 충격을 줄 수 있습니까?

답변

0

정적 속성 사이에 .이 제대로 이중 인용 된 문자열 내에서 보간되지 않습니다. 연결해야합니다.

"CREATE TABLE {$wpdb->prefix}" . self::$table; 
+0

Aww, 그게 내가 피하려고했던 것입니다. ( – Solenoid

+0

@Solenoid 나는 단지 모든 함수 호출에서 테이블 이름을 변수로 정의했을 것입니다, 당신의 작업 예제에서와 같이. $ tableName = $ wpdb-> prefix.self :: $ 테이블; –

0
$sql = "CREATE TABLE {$wpdb->prefix}".{self::$table}; 

참고 중괄호와 $wpdb->prefixself::$table

+0

아니요, 작동하지 않지만 시도했지만 목록에 추가하는 것을 잊어 버렸습니다. 그러나 "CREATE TABLE self :: $ table"이 작동하지 않기 때문에 문제는 다른 곳에 있어야합니다. – Solenoid

+1

이것은'Notice : undefined variable $ table'을 줄 것입니다. –

+0

클래스에 정적 변수'$ table'이 선언되어 있습니까? – J0HN