Как создать динамические c столбцы в таблице, используя значения массива в codeigniter - PullRequest
0 голосов
/ 03 апреля 2020

public function addDynFields()
{
    $checkedfileds=$_POST['CheckedFileds'];
    $fields=implode(',',$checkedfileds);
    $dynflds = strtolower($fields);
    $dynclmns = 'add_to'.'_'.$dynflds;
    if($fields == 'Title')
    {
        $this->db->query("ALTER TABLE `pm1asset_dynamic_fields` ADD ".$dynclmns." int(11) NOT NULL");
    }
    else
    {
        $this->db->query("ALTER TABLE `pm1asset_dynamic_fields` ADD ".$dynclmns." varchar(255) NOT NULL");
    }
}

Как создать динамические c столбцы в таблице, используя значения массива в codeigniter. Используя значение первого массива, нам нужно создать первое, а используя второе нам нужно создать второй столбец динамик c в таблице и так далее. Как это сделать, может кто-нибудь, пожалуйста, помогите мне. Любая помощь может быть оценена.

1 Ответ

0 голосов
/ 03 апреля 2020

Я бы не советовал, потому что вам также нужно дать type, length, default value, null et c. Так что это будет задача hecti c. Кроме того, вам придется проверить, существует ли таблица, а затем использовать запрос «Изменить таблицу».

Если затем необходимо также принять значение type, length от пользователя

Возможное решение


В вашей функции проверьте, существует ли таблица,

$query = "SELECT 1 from `Your_Table` LIMIT 1";
//returns false if the table does not exist.
$tableExists = $this->db->query($query);

ЕСЛИ НЕ -
Использовать запрос CREATE TABLE - //if($tableExists === FALSE)

CREATE TABLE Your_Table(
Column_1 Column_1_Attributes,
Column_2 Column_2_Attributes,
.
. 
)

Например:

$query = "CREATE TABLE MyGuests (
          id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
          firstname VARCHAR(30) NOT NULL,
          email VARCHAR(50)
        )";

ЕСЛИ ДА -

Используйте запрос ALTER TABLE--

ALTER TABLE Your_Table
MODIFY COLUMN new_column new_column_attributes;

Например:

$query = "ALTER TABLE MyGuests
          ADD lastname VARCHAR(30) NOT NULL";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...