2

私のソースコードは次のとおりです。

$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 に基づいて ` または " の使用法を抽象化する方法は?

4

2 に答える 2

1

どちらの場合もバックティックは必要ありません。機能しselect * from ant_Action;ます。バックティックを使用する必要がある場合は、運が悪い可能性があります。

preg_replace()クエリのバッククォートを二重引用符に変えるために使用できますが、エラーが発生しやすくなります。

編集されたpozsは正しいです。そうしないでください。

于 2012-10-23T19:07:03.753 に答える
1

PDOを使用して、DB DRIVERに基づいて`または"の使用法を抽象化するにはどうすればよいですか?

ありえない。PDOはそのようなことはできません。フレームワークを使用することも(ZendフレームワークのZend \ Dbが適しています)、ISO SQL構文を使用することもできます(たとえば、引用なしで機能する文字のみを使用して列に名前を付ける)

于 2012-10-23T19:08:09.367 に答える