2011-11-29 15 views
5

Al recuperar datos de MySQL, la salida de la matriz PHP tiene ambos índices numéricos y de nombre. ¿Cómo puedo prevenir esto?La salida ADOdb tiene valores dobles

voy a buscar usando:

$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; 
} 

La salida:

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

) 

Como se puede ver, la salida tiene dos índices numéricos y nombre.

+0

no sé qué $ rs representa, pero es porque su función FetchRow está realizando un mysql_fetch_array. Desea que realice un mysql_fetch_assoc. Vea si hay otras funciones de búsqueda de fila disponibles desde $ rs – Julien

+0

@Julien - Diría que '$ rs' representa un objeto [ADORecordSet] (http://phplens.com/adodb/reference.functions.adorecordset.html). –

Respuesta

7

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

$ADODB_FETCH_MODE

Ésta es una variable global que determina cómo se recuperan mediante matrices de registros. El conjunto de registros guarda este valor en la creación (por ejemplo, en Execute() o SelectLimit()), y los cambios posteriores a $ ADODB_FETCH_MODE no tienen efecto en los conjuntos de registros existentes, solo en los conjuntos de registros creados en el futuro.

Las siguientes constantes se definen:

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

¡Esa es la única! ;) – Kato

2

llamada SetFetchMode() ADO para contar qué tipo de matriz que desea conseguir.

Cuestiones relacionadas