-1
我有pdo_oci驅動程序,成功連接到oracle數據庫的pdo連接。我有一個需要雙引號的查詢,所以我的問題是:爲什麼pdo_oci :: quote不起作用?PDO ::報價爲oracle
例子:
$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 ::引號()。一切都很好,而我只使用MySQL,但現在我需要oracle。所以,如果我不知道爲什麼pdo_oci quote()不工作,我將不得不更改每個用於我自己的某些引用方法,或者重寫pdo :: quote?雖然我不想這樣做。
編輯:因爲有的拿這個例子是理所當然的,我可以給你一個的工作與MySQL和有適當的報價()的用法:
$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()工作。
手冊中提到「並非所有的PDO驅動程序都實現了這種方法」,而Oracle驅動程序是實驗性的(Oracle無法使用它並且社區不活躍)。是否有可能切換到準備好的語句? –
你是否完全明白這個功能的作用?從你發佈的代碼可以看出你沒有。 –
好點...引用一個表名將會破壞查詢。我忽略了這一點。 –