PDO ::引用oracle

时间:2013-12-16 12:37:19

标签: php mysql sql oracle pdo

我有pdo_oci驱动程序,成功连接到oracle数据库的pdo。我有一个需要双引号的查询,所以我的问题是:为什么pdo_oci :: quote不起作用?

示例:

$dsn = 'oci:dbname=' . $dbUrl . '/' . $dbName . ';charset=utf8';
$options = array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_BOTH,
             PDO::ATTR_PERSISTENT => false,
             PDO::ATTR_EMULATE_PREPARES => false);
$conn = new PDO($dsn,$db_username,$db_password,$options);
$tmp = 'temp';
var_dump('select * from' . $conn->quote($tmp));

result: string(13) "select * from"

我问这个是因为我有几个类,使用pdo :: quote()。一切都很好,而我只使用MySQL,但现在我需要oracle。所以,如果我无法弄清楚为什么pdo_oci quote()不起作用,我将不得不改变我自己的一些引用方法,或者覆盖pdo :: quote?虽然我不想这样做。

编辑:因为有些人认为这个例子是理所当然的,我可以给你一个使用mysql并使用正确的quote()用法:

$sql = 'SELECT modelID FROM statements
           WHERE modelID = ' .$this->modelID .'
           AND subject ='   .$this->dbConn->quote($row[0]) .'
           AND predicate =' .$this->dbConn->quote($row[1]) .'
           AND object ='    .$this->dbConn->quote($row[2]) .'
           AND l_language=' .$this->dbConn->quote($row[3]);

明白我的意思?如果我不能使quote()工作,这只是我需要改变的众多查询之一。

1 个答案:

答案 0 :(得分:-1)

来自mysql示例的不正确引用用法。

这里一个合适的人:

$sql = 'SELECT modelID FROM statements
       WHERE modelID = ?
       AND subject = ?
       AND predicate = ?
       AND object = ?
       AND l_language= ?';

也可以使用Oracle的这种模式。