簡體   English   中英

帶有SqlServer存儲過程的PHP PDO不會返回所有數據

[英]PHP PDO with SqlServer Stored Procedure doesn't return all the data

我得到了這樣的存儲過程:

SP_REPORT_HOME 'param1','param2',1

它執行一堆我不知道的代碼,盡管它返回了我需要使用的一堆數據。 它包含一些具有空值的字段,而其他字段則完全填充(請注意,整行不為null,只有一些字段)好吧,我在Ubuntu 10.10機器上使用PDO和PHP來獲取該信息,我的getReport方法是:

public function getReport($empresa1, $empresa2, $num) {
    $ds = $this->connection->prepare('SP_REPORT_HOME ?,?,?');
    $ds->bindParam(1, $empresa1, PDO::PARAM_STR, 4);
    $ds->bindParam(2, $empresa2, PDO::PARAM_STR, 4);
    $ds->bindParam(3, $num, PDO::PARAM_INT, 4);
    $ds->execute(); 
    return $ds->fetchAll();
}

$ this-> connection只是這樣創建的PDO實例:

$this->connection = new PDO(
        "dblib:host=IP:PORT;dbname=DBNAME", 
        "LOGIN", 
        "PASS"
    );

該方法返回包含數據的數組,但沒有包含空字段的行,有人知道為什么它不顯示這些行嗎? 我真的很需要他們 我正在使用PHP5.3和SQLServer 2008

請訪問http://php.net/manual/en/pdo.setattribute.php以獲得ATTR_ORACLE_NULLS設置。 我猜想調整此設置將獲得您想要的輸出。

好吧,最后是程序上的錯誤,盡管確實很奇怪。

該過程在其步驟之一中將創建一個臨時表並插入所需的數據。 在我們在這里使用的其他系統(使用Java內置)中,該過程運行良好,完全沒有錯誤,並且所有數據都在那里。 對於SQL Server Management Studio也是如此,沒有查詢錯誤。

雖然在php中插入失敗,因為它創建的表不包含空字段(盡管據說這樣做並非如此)。 我發現這嘗試使用mssql方式進行連接和查詢。 在$ connection-> query()調用中,它顯示一個插入錯誤,表示我試圖在一個非null字段中插入null。 但是沒有停止腳本。 結果中沒有帶空字段的行。 pdo版本可能有相同的問題,但是抑制了錯誤消息。

好吧,我們更改了過程,以便表創建指示空字段,但是仍然不知道為什么它可以在所有其他系統中工作,在php中它對這些字段使用了另一個默認值...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM