Как вставить массив php в mysql

143
12 апреля 2019, 08:50

Ключи и значения собираю в строку с помощью implode.
Как вставить их в mysql?

$table - название таблицы
$data - массив

$worker = ['id' => '', 'first_name' => 'aleks', 'last_name' => 'snake', 'title' => 'programmist', 'age' => 31, 'salary' => '65000'];
public function insert($table, $data) {
    $key = implode(', ', array_keys($data));
    $value = implode(', ', array_values($data));
    $post = mysqli_query($this->mysqli, "INSERT INTO $table ($key) VALUES      ($value)");
}
Answer 1

Если задача стоит в сохранении в MySQL, я не рекомендую использовать Ваш способ. Могу предложить следующий:

public function insert($table, $data) {
    $data = json_encode($data, JSON_UNESCAPED_UNICODE),
    $post = mysqli_query($this->mysqli, "INSERT INTO $table (`column`) VALUES ($data )");
}

А если все-же хотите такой, как у Вас:

public function insert($table, $data) {
    $key = '`'.implode('`, `', array_keys($data)).'`';
    $value = '"'.implode('", "', array_values($data)).'"';
    $post = mysqli_query($this->mysqli, "INSERT INTO $table ($key) VALUES      ($value)");
}

Но это скорее из категории "плохая практика". Вышеуказанный код годится, если поля в таблице в БД используют строчный тип... В противном случае будут проблемы.
Конечно можно сделать проверки типа... Но тогда Вам проще использовать первый вариант или готовое решение

Answer 2

Советую посмотреть в сторону типа поля JSON и хранить массив в этом формате. Правда будут некоторые ограничения с "манипуляцией им средствами SQL" и некоторый ущерб скорости операции (не критично на небольших базах). Некоторые поля из json могут автоматически записываться в назначенные ячейки с помощью GENERATED.

это скорее дополнение ответа @Node_pro, но репутация не позволяет мне пока оставлять комментарии

READ ALSO
выводит неправильный результат разницы

выводит неправильный результат разницы

Возникила такая проблема, нужно вывести разницу двух переменных $balance и $total_limit Но местами выводится значение в периодек примеру, когда

167
Для чего используется php-dom?

Для чего используется php-dom?

Появилась необходимость установить пакет php-dom

158
Ошибка в цикле при выводе товара, Woocommerce/

Ошибка в цикле при выводе товара, Woocommerce/

Если товар не лежит в категории то выводит ошибку на странице

194
Произведение чисел в двоичной СС на C++ [закрыт]

Произведение чисел в двоичной СС на C++ [закрыт]

Всем привет!) Есть очень странное задание

178