2016-12-16 63 views
0

我目前使用ODBC PDO在Windows Server 2012 R2上使用PHP查詢一個sybase數據庫。當我運行一個典型的select語句,比如「SELECT * FROM sysobjects WHERE type ='U'」時,它看起來像是在拋出一個將前一個鍵的最後一個值作爲當前鍵的第一個值的數組,如下所示:Sybase通過PHP查詢重複值

「[UID] => 101 [2] => 101 [類型] => U [3] => U [userstat] => 0 [4] => 0 [SYSSTAT] => 0」

正如你所看到的,在索引[2]的開始處重複[uid]索引的「101」元素在索引[3]的開始處重複索引[2]結尾處的「=> U」 ,等等 - 這貫穿整個陣列爆炸。這看起來不正確 - 有沒有人有一個想法,爲什麼會發生這種情況,解決方案是什麼(如果這是不正常的?)。如果有幫助,我會包含以下PHP:

<?php 

//[BD]---Display All Errors 
ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 

echo "Boom! <br /><br />"; 

//[BD]---Try the Connection 
try { 

    //Connection Variables 
    $dsn = "odbc:Database"; 
    $username = "user"; 
    $password = "password"; 

    //Connection String 
    $conn = new PDO($dsn, $username, $password); 

    //Initiating Error Detection 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 

//[BD]---Catch exceptions to the Try 
catch(Exception $e) { 
    echo "Invalid Connection"; 
    //Print Error Messages 
    die(print_r($e->getMessage())); 
} 

//[BD]---SQL Statement(s) 

/* 
----------List of Tables---------- 
*/ 

$stmt = $conn->prepare("SELECT * FROM sysobjects WHERE type = 'U'"); 

//[BD]---Execute SQL Statement 
$stmt->execute(); 
    while ($row = $stmt->fetch()) { 
     print_r($row); 
     echo "<br />"; 
    } 

echo "<br />Connected Successfully"; 
?> 

回答

1

這是正常現象。默認情況下,返回數組中的鍵包含字段名稱和列號(基於0)。如果您只需要一個或另一個,則可以將fetch_style var設置爲PDO :: FETCH_ASSOC僅使用名稱作爲鍵,或者將PDO :: FETCH_NUM用列號編索引。

這是第一個參數fetch作爲記錄@http://php.net/manual/en/pdostatement.fetch.php

+0

謝謝user3137702! – user4333011