2013-05-28 62 views
1

我正在運行IIS7上安裝的Windows Server 2008 R2 server with PHP5.4 and SQLSRVSQLSRV PDO驅動程序將額外字符添加到整數

基本問題是,當我嘗試檢索某些值時,將額外/未知字符添加到返回的值。

$options = array(PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_SYSTEM); 
$this->db = new PDO("sqlsrv:server=$host;Database=$dbname",$user,$pass,$options); 

$this->stmt =$this->connection->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED)); 
$this->stmt->execute(); 

$this->obj = $this->stmt->fetch(PDO::FETCH_OBJ) 
$this->obj->$column; 

哪裏$column是 「ID」 這樣的東西。

當我在返回值上運行var_dump時,它讀出string(4) "455"。如果我有$ strB設置爲"455", $strA == $strB評估爲false ...

我試過iconv and utf8_decode上的返回值,以及設置不同的PDO編碼,都沒有成功。

數據庫排序規則設置爲SQL_Latin1_General_CP1_CI_AS。任何幫助,將不勝感激!

回答

0

問題顯然已做設置光標...

$this->stmt =$this->connection->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED)); 

從選項刪除陣列光標在設置後,未知的人物走了。

0

我這樣做:

$serverName = "mySrv"; 
$db = new PDO("sqlsrv:Server=mySrv;Database=AdventureWorks", "myUser","mypass"); 

$db->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_SYSTEM);       
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$tsql = "Select num from myTable"; 
$stmt = $db->prepare($tsql); 

$stmt->execute(); 

$fun = $stmt->fetch(); 

echo gettype($fun['num'])."<br>"; 
var_dump($fun['num']); 

結果:

integer 
int(496) 
相關問題