以下查询在phpMyAdmin中有效,但在我使用mysql或pdo时都不能从php脚本中运行。正常的选择查询可以使用相同的PHP脚本。
abc hij klm
def pqr hij
mmm fgf hgt
yyt ghf jkw
我在LAMP服务器上安装了PHP版本5.5.0和mysqlnd 5.0.11-dev。
我在stackoverflow上读到你不能使用pdo进行多次查询。然而,在this问题中,描述了两种方法,这两种方法都不适用于我。
我尝试使用此设置,但它不起作用:
CREATE TEMPORARY TABLE tmptable1 (INDEX myindex (sid)) SELECT * FROM `table1` WHERE uid = 55 ORDER BY cc;
SELECT * FROM tmptable1 GROUP BY sid;
我尝试了另一种关于stackoverflow的答案建议的另一种方法,但它说该函数未知:
$db = new PDO("mysql:host=localhost;dbname=test", 'root', '');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
$sql = "
DELETE FROM car;
INSERT INTO car(name, type) VALUES ('car1', 'coupe');
INSERT INTO car(name, type) VALUES ('car2', 'coupe');
";
try {
$db->exec($sql);
}
catch (PDOException $e)
{
echo $e->getMessage();
die();
}
如何从我的php脚本中获取此查询以获取结果?
答案 0 :(得分:2)
逐个执行两个查询。
$db->query($query1); // Create temporary table
$db->query($query2); // Fetch from it
没有理由不这样做。
答案 1 :(得分:1)
临时表仅在同一连接中可用。一旦连接被销毁/关闭,在此连接期间创建的临时表也是如此。
在你的脚本中,我没有看到tmp表的创建,这是否意味着你在另一个脚本中创建它并因此连接?
是的,我建议你做三个单独的查询。即使你找到了一种方法来做所有三合一。这不太可能导致性能问题,但您肯定会获得代码清晰度。