Выход ADOdb имеет двойные значения - PullRequest
5 голосов
/ 29 ноября 2011

При извлечении данных из MySQL вывод массива PHP имеет и числовой индекс и индекс имени Как я могу предотвратить это?

Я получаю с помощью:

$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
        )

)

Как видите, выходные данные имеют числовой и именной индексы.

Ответы [ 2 ]

7 голосов
/ 29 ноября 2011

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

$ADODB_FETCH_MODE

Это глобальная переменная, которая определяет, как массивы извлекаются наборами записей.Набор записей сохраняет это значение при создании (например, в Execute () или SelectLimit ()), и любые последующие изменения в $ ADODB_FETCH_MODE не влияют на существующие наборы записей, только на наборы записей, созданные в будущем.

Следующееконстанты определены:

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);
2 голосов
/ 29 ноября 2011

Вызовите SetFetchMode () , чтобы сообщить ADO, какой тип массива вы хотите получить.

...