2010-12-17 58 views
3

前一段時間,我編寫了一個數據庫類,它使用PDO連接到SQL Server數據庫以及MySQL數據庫。在MySQL數據庫上使用它時,它總是替換問號,但對於SQL Server數據庫,我必須創建一個基本上可以手動替換問號的解決方案。這是代碼。PHP PDO SQL Server Select語句不會替換問號

if($this->getPDODriver() == 'odbc' && !empty($values_a) && substr_count($query_s, "?") > 0) { 
    $query_s = preg_replace(array_fill(0, substr_count($query_s, "?"), '/\?/'), $values_a, $query_s, 1); 
    $values_a = NULL; 
} 

現在,我明白,這完全打敗了問號和PDO的目的,但它一直在爲我工作得很好。但是,現在我想要做的是找出爲什麼問號不會首先被替換,並刪除此解決方法。

如果我有一個像下面

SELECT * FROM database WHERE value = ? 

這是查詢的樣子,當我去準備,但是當我顯示查詢結果,這是一個空白陣列的SELECT語句。

請記住,這個類在MySQL中工作正常,並且它在上面的工作中工作正常。所以我知道這與問號有關。

回答

0

信息不足查看SQL Server Profiler,並將pdo發送的真實查詢與預期值進行比較。