2016-12-16 3 views
0

現在、ODBC PDOを使用してWindows Server 2012 R2上のPHPを使用してsybaseデータベースに照会しています。 "SELECT * FROM sysobjects WHERE type = 'U'のような典型的なSELECT文を実行すると、前のキーの最後の値を現在のキーの最初の値として配置する配列が爆発するように見えます。PHPによって照会されたSybaseの値が複写されます

"[UID] => 101 [2] => 101 [タイプ] => U [3] => U [userstat] => 0 [4] => 0 [SYSSTAT] => 0"

[uid]インデックスを終了する "101"要素は、インデックス[2]の先頭で繰り返され、インデックス[2]の最後にある "=> U"はインデックス[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を使用してカラム番号でインデックス付けします。 http://php.net/manual/en/pdostatement.fetch.php

+0

@文書として

これはfetchに第一パラメータであり、user3137702をありがとう! – user4333011

関連する問題