Передача аргумента функции в SQL-запрос - PullRequest
0 голосов
/ 07 сентября 2018

У меня тут странная проблема. Я передаю идентификатор из контроллера в файл функции, чтобы использовать его в запросе. Передача идентификатора работает, и я сбросил его, чтобы убедиться, что это фактический идентификатор, который я ожидаю, и это так.

Проблема в том, что когда я добавляю предложение where к моему sql, буквально изменяя только одну строку, я получаю ошибку:

Parse error: syntax error, unexpected '$result' (T_VARIABLE), expecting function (T_FUNCTION)

Вот рабочая версия (хотя, очевидно, это широкий запрос)

public function grabList(int $id)
  {

      $sql = "
        SELECT *
        FROM schemaTest.List L
          INNER JOIN schemaTest.user u
            ON l.user_id = u.ID
          ";
    }

      $result = DB::connection('odbc')->select(DB::raw($sql));
      return $result;

  }

Но когда я добавляю предложение where, которое использует идентификатор, переданный в функцию, я получаю сообщение об ошибке.

public function grabList(int $id)
  {

      $sql = "
        SELECT *
        FROM schemaTest.List L
          INNER JOIN schemaTest.user u
            ON l.user_id = u.ID
        WHERE u.ID = {$id} 
          ";
    }

      $result = DB::connection('odbc')->select(DB::raw($sql));
      return $result;

  }

Я предполагаю, что это из-за синтаксиса, который я использую, чтобы попытаться использовать аргумент функции в запросе. Есть идеи?

Ответы [ 5 ]

0 голосов
/ 07 сентября 2018

Просто смотря на количество фигурных скобок, оно не анализируется. У вас есть две закрывающие скобки и одна открывающая скобка, что означает, что $result не содержится в функции. Отсюда Parse error: syntax error, unexpected '$result'.
Джинеш Джойсар набрал правильный метод только сейчас.

0 голосов
/ 07 сентября 2018

попробуйте это

public function grabList(int $id)
    {

        $sql = "
            SELECT *
            FROM schemaTest.List L
            INNER JOIN schemaTest.user u
            ON l.user_id = u.ID
            WHERE u.ID = :uid ";

          $result = DB::connection('odbc')->select(DB::raw($sql),['uid' => $id]);
          return $result;

    }
0 голосов
/ 07 сентября 2018

Я не уверен на 100%, как вы передаете $id, но, возможно, вам нужны кавычки в запросе SQL?

WHERE u.ID = '{$id}'

0 голосов
/ 07 сентября 2018

Вы уверены, что первый работает нормально?Потому что у вас есть синтаксическая ошибка.

public function grabList(int $id)
{

    $sql = "
        SELECT *
        FROM schemaTest.List L
          INNER JOIN schemaTest.user u
            ON l.user_id = u.ID
        WHERE u.ID = {$id} 
          ";
} // <-- remove this, that would end the function block
// thus causing the error here, unexpected `$result`
     $result = DB::connection('odbc')->select(DB::raw($sql));
      return $result;

}
0 голосов
/ 07 сентября 2018

почему вы используете синтаксис как ядро ​​.use laravel synatx для запроса если вы используете вторую базу данных, пожалуйста, укажите в .env и config> database.php

использовать ссылку http://fideloper.com/laravel-multiple-database-connections

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