2016-12-16 8 views
0

В настоящее время я запрашиваю базу данных sybase с использованием PHP на Windows Server 2012 R2 с использованием ODBC PDO. Когда я запускаю типичный оператор select, такой как «SELECT * FROM sysobjects WHERE type = 'U», он, похоже, взорвал массив, который ставит последнее значение предыдущего ключа в качестве первого значения текущего ключа, например:Sybase запросил через значения дубликатов PHP

"[UID] => 101 [2] => 101 [тип] => U [3] => U [userstat] => 0 [4] => 0 [Sysstat] => 0"

Как вы можете видеть, элемент «101», который завершает индекс индекса [uid], повторяется в начале индекса [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"; 
?> 

ответ

1

Это нормально. Ключи в возвращаемом массиве для строки по умолчанию содержат как имя поля, так и номер столбца (основанный на 0). Если вы хотите только один или другой, вы можете установить fetch_style var в PDO :: FETCH_ASSOC, чтобы использовать только имена в качестве ключей или PDO :: FETCH_NUM, чтобы индексировать их по номеру столбца.

Это первый параметр fetch как документировано @http://php.net/manual/en/pdostatement.fetch.php

+0

Спасибо, user3137702! – user4333011