2011-11-29 2 views
5

MySQLからデータを取得する場合、PHP配列の出力はとなります。の数値と名前のインデックスがあります。どうすればこれを防ぐことができますか?ADOdbの出力にdouble値があります

は、私が使用してフェッチ:

$stmt = $this->dbObj->Prepare($sql); 
$rs = $this->dbObj->Execute($stmt); 
if (!$rs) 
     trigger_error($this->dbObj->ErrorNo() . ' ' . $this->dbObj->ErrorMsg(), E_USER_ERROR); 
$this->videos_voted = null; 
while ($row = $rs->FetchRow()) { 
    $this->videos_voted[$row['video_id']] = $row; 
} 

出力:

Array 
(
    [16] => Array 
     (
      [0] => 16 
      [video_id] => 16 
      [1] => 1028 
      [total_views] => 1028 
      [2] => No 
      [featured] => No 
     ) 

) 

あなたが見ることができるように、出力が数値と名前のインデックスの両方を持っています。

+0

$ rsが表すものはわかりませんが、FetchRow関数がmysql_fetch_arrayを実行しているからです。 mysql_fetch_assocを実行します。 $ rs – Julien

+0

から利用可能な他の行フェッチ関数があるかどうかを見てください。@Julien - '$ rs'は[ADORecordSet](http://phplens.com/adodb/reference.functions.adorecordset.html)オブジェクトを表します。 –

答えて

7

より:http://phplens.com/lens/adodb/docs-adodb.htm#adodb_fetch_mode

$ADODB_FETCH_MODE

これはアレイがレコードによって取得する方法を決定するグローバル変数です。レコードセットはこの値を作成時に保存します(Execute()やSelectLimit()など)。その後の$ ADODB_FETCH_MODEの変更は、既存のレコードセットには影響せず、将来作成されるレコードセットにのみ影響します。

以下の定数が定義されています。あなたが取得したい配列の種類ADOを伝えるために

define('ADODB_FETCH_DEFAULT',0); 
define('ADODB_FETCH_NUM',1); 
define('ADODB_FETCH_ASSOC',2); 
define('ADODB_FETCH_BOTH',3); 

$db->SetFetchMode(ADODB_FETCH_ASSOC); 
+0

これはひとつです! ;) – Kato