Объект класса stdClass не может быть преобразован в строку (номер ошибки: 1064) - PullRequest
1 голос
/ 09 апреля 2019

Я получаю эту ошибку (проверьте точную ошибку в нижней части вопроса) Я проверяю снова и снова, но не могу найти, что не так. Кажется, все в порядке. На insert_batch все работает нормально, но на update_batch я получаю эту ошибку. Вот мой текущий код

Кодовый указатель модели : Вот модель, которая правильно выбирает данные

    function get_seeds($tournament_id) {
        $this->db->where('tournament_id', $tournament_id);
        $result = $this->db->get('tournament_seed');
        return $result->result();
    }

Контроллер Codeigniter : Вот мой контроллер, где я проверяю, есть ли и череду семян. Если ДА, тогда обновите в противном случае.

    $check_seeds = (object)$this->tournament_model->get_seeds($tournament_id);
    if ($_POST) {
        foreach ($check_seeds as $key => $value) {
            if(!empty($key) && !empty($value)) {
                $seeded[] = array(
                    'id' => $value->id,
                    'tournament_id' => $tournament_id,
                    'stage_id' => $stage_id,
                    'seed_id' => $value,
                    'team_name' => $key,
                );
                $this->db->update_batch('tournament_seed', $seeded, 'id');
                redirect('organizer/tournaments);
            } else {
                //something
            }
        }
    }

print_r ($ check_seeds)

    stdClass Object
    (
        [0] => stdClass Object
        (
            [id] => 3
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 1
            [team_name] => -V-ATTAX
        )

        [1] => stdClass Object
        (
            [id] => 4
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 2
            [team_name] => NIP
        )

        [2] => stdClass Object
        (
            [id] => 5
            [tournament_id] => 713161746
            [stage_id] => 3
            [seed_id] => 3
            [team_name] => fnatic
        )
    )

Ошибка

    A PHP Error was encountered
    Severity: 4096

    Message: Object of class stdClass could not be converted to string

    Filename: database/DB_query_builder.php

    Line Number: 1970

    Backtrace:

    File: E:\xampp\htdocs\hltv\application\controllers\organizer\Tournaments.php
    Line: 1065
    Function: update_batch

    File: E:\xampp\htdocs\hltv\index.php
    Line: 315
    Function: require_once


    Error Number: 1064

    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ELSE `seed_id` END, `team_name` = CASE WHEN `id` = '4' THEN '1' ELSE `team_name' at line 7

    UPDATE `tournament_seed` SET `tournament_id` = CASE WHEN `id` = '4' THEN '713161746' ELSE `tournament_id` END, `stage_id` = CASE WHEN `id` = '4' THEN '3' ELSE `stage_id` END, `seed_id` = CASE WHEN `id` = '4' THEN ELSE `seed_id` END, `team_name` = CASE WHEN `id` = '4' THEN '1' ELSE `team_name` END WHERE `id` IN('4')

    Filename: E:/xampp/htdocs/hltv/system/database/DB_driver.php

    Line Number: 691

1 Ответ

2 голосов
/ 10 апреля 2019

Вы пытаетесь использовать update_batch () для тех же данных, которые вы только что запросили из таблицы базы данных touring_seed , но вы не используете новый $ _ POST данные для обновления.

Вы также используете update_batch () внутри цикла, что неверно.Цикл предназначен только для создания массива, который вы хотите обновить, затем вне цикла вы update_batch ()

используете следующее для создания массива, который позже можно использовать для update_batch () , что-то вроде:

$seeded=array();
$sd=array();        
foreach($_POST['your_newly_posted_seeds'] as $key=>$value){
    $sd['id']=$value->id;
    $sd['tournament_id']=$tournament_id;
    //...
    array_push($seeded, $sd);
}

$this->db->update_batch('tournament_seed', $seeded, 'id');

update_batch () из документов , прокрутка вниз или поиск: $ this-> db-> update_batch () поскольку к нему нет закладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...