我的源代码是:
$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抽象`或"用法?
最佳答案
How to use PDO to abstract the ` or " usage based on DB DRIVER?
不。 PDO 没有能力做这样的事情。您可以使用框架(Zend 框架的 Zend\Db 很适合),或者使用 ISO SQL 语法(例如,仅使用不带引号的字符命名列)
关于MySQL 和 PostgreSQL 引用字段名称之间的 PHP PDO 兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037319/