Создать таблицу из массива с подготовкой

Возможно ли создать таблицу с помощью функции wpdb::prepare ?

Я прочитал документацию и попытался найти примеры, но там, где никто не помог мне.

Даже создание таблицы с подготовкой не дает мне никаких полезных примеров в Google.

В настоящее время я создаю таблицу следующим образом:

 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; } 

Но я узнал, что просто используя

 $wpdb->query($sql) 

небезопасно и что вам следует

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

Итак, что мне помещать в $args здесь и что будет с кодом SQL, а затем с использованием строк формата запроса?

Solutions Collecting From Web of "Создать таблицу из массива с подготовкой"

Я попробовал это в локальном режиме, и я думаю, что у вас есть несколько полей внутри $fields поэтому я добавил их в массив.

Просто посмотрите на код ниже; он отлично работает, как проверено:

 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; }