Undefined offset: 1 Failed to prepare SQL: INSERT INTO

151
03 февраля 2021, 13:50

Помогите,пожалуйста,разобраться,целый день не могу понять ошибки. Есть проект. Его одинаковые версии лежать локально на OpenServer и на тестовом сервере. Так вот локально все работает, а на тестовом выдает ошибку при INSERT, может кто сталкивался и подскажет где копать? спасибо. скрины версий софта на сервере прилагаю.

Сама ошибка текстом

Database Exception – yii\db\Exception
Undefined offset: 1
Failed to prepare SQL: INSERT INTO `seminars`.`bg_seminar` (`seminar_tema`, `seminar_subject`, `seminar_place`, `seminar_otdel`, `seminar_db`, `seminar_de`, `seminar_belgiss`, `seminar_gosstandart`) VALUES (:qp0, :qp1, :qp2, :qp3, :qp4, :qp5, :qp6, :qp7)
↵
Caused by: yii\base\ErrorException 
 in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/db/Command.php at line 227

            $pdo = $this->db->getMasterPdo();
        }
        try {
            $this->pdoStatement = $pdo->prepare($sql);
            $this->bindPendingParams();
        } catch (\Exception $e) {
            $message = $e->getMessage() . "\nFailed to prepare SQL: $sql";
            $errorInfo = $e instanceof \PDOException ? $e->errorInfo : null;
            throw new Exception($message, $errorInfo, (int) $e->getCode(), $e);
        }
    }
    /**
     * Cancels the execution of the SQL statement.
     * This method mainly sets [[pdoStatement]] to be null.
     */
    public function cancel()
    {
2. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/db/Command.php at line 775 – yii\db\Command::prepare(false)
3. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/db/Schema.php at line 448 – yii\db\Command::execute()
4. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/db/ActiveRecord.php at line 454 – yii\db\Schema::insert('seminars.bg_seminar', ['seminar_tema' => 'Тест2', 'seminar_subject' => '2', 'seminar_place' => 'ывываыва', 'seminar_otdel' => ['2'], ...])
5. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/db/ActiveRecord.php at line 424 – yii\db\ActiveRecord::insertInternal(null)
6. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/db/BaseActiveRecord.php at line 593 – yii\db\ActiveRecord::insert(true, null)
7. in /work/web/dseminar/dev/www/controllers/SeminarsController.php at line 93 – yii\db\BaseActiveRecord::save()

                date('Y-m-d H:i:s', strtotime(Main::translateDate(
                Yii::$app->request->post('Bg_seminar')['seminar_db'])));
            $model->seminar_de = 
                date('Y-m-d H:i:s', strtotime(Main::translateDate(
                Yii::$app->request->post('Bg_seminar')['seminar_de'])));
            $model->save();
            SeminarCreateForm::saveTags($model);
            $ObjFiles->seminar_files = UploadedFile::getInstances($ObjFiles, 'seminar_files');
            if($ObjFiles->seminar_files) {

8. app\controllers\SeminarsController::actionCreate()
9. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/base/InlineAction.php at line 55 – call_user_func_array([app\controllers\SeminarsController, 'actionCreate'], [])
10. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/base/Controller.php at line 151 – yii\base\InlineAction::runWithParams([])
11. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/base/Module.php at line 455 – yii\base\Controller::runAction('create', [])
12. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/web/Application.php at line 84 – yii\base\Module::runAction('seminars/create', [])
13. in /work/web/dseminar/dev/www/vendor/yiisoft/yii2/base/Application.php at line 375 – yii\web\Application::handleRequest(yii\web\Request)
14. in /work/web/dseminar/dev/www/htdocs/index.php at line 28 – yii\base\Application::run()

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../config/web.php');
(new yii\web\Application($config))->run();
Answer 1

Если возникает такая ошибка (в запросе встречается :qp0) или подобная, то первым делом надо проверить входные параметры. Они должны быть скалярами.

Такой запрос:

$task = static::find()
    ->where([
        'orderId' => $orderId,
        'taskTypeId' => $taskTypeId,
    ])
    ->andWhere(['!=', 'taskStatus', [TaskStatus::FINISHED]])
    ->one();

Вызывает такую ошибку:

[yii\db\Exception] Undefined offset: 1
Failed to prepare SQL: SELECT * FROM "task" WHERE (("orderId"=:qp0) AND 
("taskTypeId"=:qp1)) AND ("taskStatus" != :qp2)

В коде достаточно сложно определить, что TaskStatus::FINISHED передается не скалярным значением, а массивом. Ошибка в [TaskStatus::FINISHED]

READ ALSO
Ошибка 500 без логов

Ошибка 500 без логов

Перенес проект с хостинга на VPSНачала появляться ошибка 500

69
Нужно рассчитать рабочее время с учетом временных рамок

Нужно рассчитать рабочее время с учетом временных рамок

Есть рабочее время, например с 9:00 до 18:00Есть данные, когда рабочий приступил к работе (например 30 числа в 10:00) и когда он закончил работу (например...

112
Не могу получить значение переменной из класса

Не могу получить значение переменной из класса

$akk - ответ мускула на запросОтвет верный, num_rows выдает 1

111
Как добавить 2 разных класса в <div>?

Как добавить 2 разных класса в <div>?

Помогите пожалуйстаЕсть код

137