Сбой запроса PHP Pdo SELECT VIEW - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь выполнить следующий запрос в PHP 7.1

$pdoClient->exec("DROP VIEW IF EXISTS my_view;

          CREATE VIEW my_view AS 
           select option_name,option_value from db1.options 
          UNION ALL 
           select option_name,option_value from db2.options;
");

$pdoClient->query("SELECT * from my_view WHERE option_name = 'blabla'";

Я получаю ошибку

No database selected (SQLSTATE=3D000, CODE=1046).

Но если я добавлю базу данных в конструктор Pdo или добавлю "USE db1;" Заявление выше я получаю

Table 'db1.my_view' doesn't exist (SQLSTATE=42S02, CODE=1146). 

Почему-то кажется, что я пытаюсь запустить таблицу вместо представления.

Есть идеи?

1 Ответ

0 голосов
/ 24 апреля 2018

Как я уже говорил, вы не можете передать более 1 оператора через PDO.Вы должны выделить их, как показано ниже.Все это рассматривается как одно соединение, и каждая команда будет выполняться отдельно.

$create = "CREATE VIEW my_view AS 
           select option_name,option_value from db1.options 
          UNION ALL 
           select option_name,option_value from db2.options";
$pdoClient = new PDO("mysql:host=$host;port=$port", $user, $pass);
$pdoClient->exec("USE db1"); // Select the database
$pdoClient->exec("DROP VIEW IF EXISTS my_view");
$pdoClient->exec($create);

После того, как это будет сделано, выбор будет работать нормально, например:

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