MySQL和PostgreSQL引用字段名称之间的PHP 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);

^这是不是由于````Quals'',在posgresql中您必须使用"在这种情况下"(" ant_action")

如何使用PDO抽象`基于DB驱动程序的使用?

如何使用PDO摘要基于数据库驱动程序的"或"使用"?

NOWAYS。PDO无法做这种事情。您可以使用一个框架(Zend Framework的Zend db对其有益),也可以使用ISO SQL语法,您可以在其中(F.Ex。列表列,只有无用引号的字符)

在任何一种情况下,backticks都不必需:select * from ant_Action;将起作用。如果您必须使用背tick滴,则可能会失去运气。

您可以使用 preg_replace()将查询中的背景转换为双引号,但这可能是错误的。

编辑 POZS是正确的。不要那样做。

最新更新