Crie uma tabela da matriz com a preparação

É possível criar uma tabela com a function wpdb::prepare ?

Eu li a documentação e tentei encontrar exemplos, mas lá onde nenhum que me ajudou.

Mesmo criar uma tabela com preparação não me dá nenhum exemplo útil no Google.

Atualmente, estou criando minha mesa como esta:

 public function createTableFromFields( $tablename, $fields ) { // $wpdb = $this->db; $tablename = $wpdb->prefix . $tablename; $sql = 'CREATE TABLE IF NOT EXISTS ' . $tablename . ' (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY'; foreach ( $fields as $field ) { $sql .= ", $field TEXT"; } $sql .= ')'; $result = $wpdb->query( $sql ); return $result; } 

Mas eu aprendi que apenas usando

 $wpdb->query($sql) 

é inseguro e que você prefere fazê-lo com

 $wpdb->query(prepare($sql, $args). 

Então, o que eu coloco em $args aqui e qual seria o código SQL , em seguida, usando as seqüências de formato de consulta?

Solutions Collecting From Web of "Crie uma tabela da matriz com a preparação"

Eu tentei isso no local, e acho que você tem vários campos dentro de $fields então eu os adicionei na matriz.

Basta olhar para o código abaixo; funciona bem como testado:

 add_action('your_hook', 'createTableFromFields'); function createTableFromFields($tablename) { $wpdb = $this->db; $tablename = $wpdb->prefix . $tablename; $fields = array('PersonID','LastName'); $sql = 'CREATE TABLE IF NOT EXISTS %s (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY'; $test = array(); foreach ($fields as $field) { $test[] = $field." TEXT"; } $t = implode(",", $test); $sql .= ",%s)"; $result = $wpdb->query($wpdb->prepare(sprintf($sql, $tablename, $t))); return $result; }