我正在尝试在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).
出于某种原因,它认为我正在尝试运行表而不是视图。
有什么想法吗?
答案 0 :(得分:0)
正如我所提到的,你不能在via PDO中传递超过1个语句。您需要将它们分开,如下所示。它被视为一个连接,它将分别运行每个命令。
$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);
完成此操作后,select将正常工作,如下所示:
$pdoClient->query($select);