Как добавить другое значение в оператор вставки PDO, независимо от того, какой массив нужно ввести - PullRequest
0 голосов
/ 31 марта 2020

Я новичок в PDO и пытаюсь перепроектировать свою систему и добавить некоторые новые функции.

Я был бы очень признателен, если бы кто-то мог мне помочь, я сам получил первую часть, но так как У меня мало опыта работы с PDO, как я уже сказал, просто дальше не могу.

Как видно из заголовка, существует несколько операторов INSERT.

Ввод значений работает отлично ! Но теперь нужно написать другое значение, и я не знаю, как должен работать синтаксис.

Вот мой предыдущий код:

$player_tag = "#xyz";

$a_arr = [];
$b_arr = [];
$c_arr = [];

$a_arr[] =
    ["name" => $decoded_json['name'],
        "rank" => (int)$decoded_json['rank']];
$b_arr[] =
    ["name" => $decoded_json_2['name'],
        "rank" => (int)$decoded_json_2['rank']];
$c_arr[] =
    ["name" => $decoded_json_3['name'],
        "rank" => (int)$decoded_json_3['rank']];

$tables_to_insert = [];

if (!empty($a_arr)) $tables_to_insert[] = "a";
if (!empty($b_arr)) $tables_to_insert[] = "b";
if (!empty($c_arr)) $tables_to_insert[] = "c";

if (!empty($tables_to_insert)) {

    foreach ($tables_to_insert as $table) {

        $current_arr = ${$table . "_arr"};  // a_arr, b_arr, c_arr
        console_log($current_arr);
        $current_table = 'player_' . $table; // player_a, player_b, player_c 

        $names_arr = array_column($current_arr, 'name');
        $ranks_arr = array_column($current_arr, 'rank');

        $names = implode(", ", $names_arr);


        $place_holders = implode(',', array_fill(0, count($ranks_arr), '?'));

        $sth = $conn->prepare("INSERT INTO `" . $current_table . "` ($names) VALUES ($place_holders)");

        $sth->execute($ranks_arr);

    }
}

Что следует добавить:

colum player_tag для всех этих таблиц

Я пробую это, но это не сработало.

$sth = $conn->prepare("INSERT INTO `" . $current_table . "` (player_tag, $names) VALUES ($player_tag, $place_holders)");

$sth->execute($ranks_arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...