PHP PDO MySQL和PostgreSQL引用字段名称之间的兼容性

时间:2012-10-23 18:59:40

标签: php mysql postgresql pdo

我的源代码是:

$db = new PDO("mysql:host=" . $host . ";dbname=" . $dbname, $username, $password);
$sth = $resourceLinkID -> prepare("SELECT * FROM `ant_Action`;");
$sth -> execute();
$result = $sth -> fetch(PDO::FETCH_ASSOC);
print_r($result);

^这是工作!

$db = new PDO("pgsql:dbname=" . $dbname . ";user=" . $user . ";password=" . $password . ";host=" . $host);
$sth = $resourceLinkID -> prepare("SELECT * FROM `ant_Action`;");
$sth -> execute();
$result = $sth -> fetch(PDO::FETCH_ASSOC);
print_r($result);

^这是工作由于`问题,在PosgreSQL中你必须使用“在这种情况下(”ant_Action“)

如何使用PDO抽象基于DB DRIVER的“或”用法?

2 个答案:

答案 0 :(得分:1)

在任何一种情况下都不需要反引号:select * from ant_Action;将起作用。如果你必须使用后面的蜱,你可能会运气不好。

您可以使用preg_replace()将查询中的反引号变为双引号,但这可能容易出错。

已编辑 pozs是对的。不要那样做。

答案 1 :(得分:0)

  

如何使用PDO抽象基于DB DRIVER的“或”用法?

Noways。 PDO不具备此类功能。你可以使用一个框架(Zend框架的Zend \ Db对它很好),或者使用ISO SQL语法,你可以使用它(f.ex.只列名列,而不使用引号的字符)