2011-08-17 3 views
0

je dois définir un nom de table lors de la création de MySQL, la première partie est un préfixe défini et dernière partie est mon propre nom de table, je voudrais éviter de créer une variable supplémentaire pour les tenir avant les transmettre à ma requête.nom de la table MySql concaténation

Mon code est enveloppé dans une classe, j'ai défini mon nom de table une variable private static, mon code semble valide mais ne fonctionne pas.

C'est ce que je l'ai essayé jusqu'à présent:

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 

Quelqu'un peut-il me donner une commotion cérébrale de la connaissance?

Répondre

0

Une propriété statique ne seront pas correctement interpolées dans une chaîne entre guillemets. Vous devez le concaténer.

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

Aww, c'est ce que j'essayais d'éviter :(. – Solenoid

+0

@Solenoid Je voudrais probablement juste définir le nom de la table comme une variable dans chaque appel de fonction alors, comme dans votre exemple de travail. '$ TableName = $ wpdb-> prefix.self :: $ table; ' –

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

Remarque accolades et pas . entre $wpdb->prefix et self::$table

+0

Nope, ne fonctionne pas, a essayé mais a oublié d'ajouter à la liste. Mais depuis « CREATE TABLE self :: $ table » ne fonctionne pas le problème doit être ailleurs. – Solenoid

+1

Cela va probablement donner 'Avis: variable non définie table' de $. –

+0

Avez-vous variable statique 'table' $ déclarée dans votre classe? – J0HN

Questions connexes