Sybase 通过 PHP 查询重复值

Sybase queried through PHP duplicates values

我目前正在使用 ODBC PDO 在 Windows Server 2012 R2 上使用 PHP 查询 sybase 数据库。当我 运行 一个典型的 select 语句时,例如 "SELECT * FROM sysobjects WHERE type = 'U'" 它似乎爆炸了一个数组,该数组将前一个键的最后一个值作为当前键的第一个值,如下所示:

"[uid] => 101 [2] => 101 [类型] => U [3] => U [userstat] => 0 [4] => 0 [sysstat] => 0" =12=]

如您所见,结束 [uid] 索引的“101”元素在索引 [2] 的开头重复,索引 [2] 末尾的“=> U”在索引 [2] 的开头重复索引 [3],依此类推 - 这会持续到整个数组爆炸。这似乎不对 - 有没有人知道为什么会发生这种情况以及解决方案是什么(如果这是异常的?)。如果对您有帮助,我会在下面添加 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";
 ?>

这是正常的。默认情况下,返回的行数组中的键同时包含字段名和列号(从 0 开始)。如果您只想要一个或另一个,您可以将 fetch_style var 设置为 PDO::FETCH_ASSOC 以仅使用名称作为键,或 PDO::FETCH_NUM 按列号索引它们。

如@http://php.net/manual/en/pdostatement.fetch.php

所述,这是 fetch 的第一个参数