2011-08-17 39 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

@电磁阀我可能只是在每个函数调用中将表名定义为一个变量,然后,就像在你的工作示例中那样:'$ tableName = $ wpdb-> prefix.self :: $表;' –

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

注意花括号和$wpdb->prefixself::$table

+0

不,不工作,试过但忘了添加到列表中。但由于“CREATE TABLE self :: $ table”不起作用,所以问题必须在别处。 – Solenoid

+1

这将可能给'注意:未定义的变量$ table'。 –

+0

你有静态变量'$ table'在类中声明? – J0HN