2010-09-07 19 views
10

Al usar mysql_fetch_object() para devolver objetos de una consulta MySQL, a veces los nombres de columna tienen espacios en ellos y no se pueden alias, como cuando se ejecuta SHOW CREATE PROCEDURE. La definición del procedimiento se devuelve en una columna llamada Create Procedure. En mi caso, la capa de abstracción de datos solo permite el uso de mysql_fetch_object(), por lo que no puedo simplemente usar mysql_fetch_assoc() para evitar este problema.¿Cómo se accede a las columnas con un espacio en ellas a través de mysql_fetch_object?

¿Puedo acceder a las columnas con espacios cuando usa mysql_fetch_object()?

Respuesta

4

Esto me tomó un tiempo para crackear, así que pensé en publicarlo aquí, de ahí la respuesta rápida. :)

// Internally, this db abstraction layer uses mysql_fetch_object(). 
$query = $db->query('SHOW CREATE PROCEDURE `%s`', 'test'); 
foreach ($query as $row) { 
    $procedure = $row->{'Create Procedure'}; 
} 

No sé si esto es específico de una versión de PHP, pero funciona bajo PHP 5.3.1 en Windows, por lo menos.

17

En términos generales,

$recordname->{"my column name"} 

hará el truco.

También puede hacer un print_r($record); para averiguar cómo se representan las columnas en el objeto.

+0

Funcionó para mí, perfecto. –

-2

Usa las comillas. Ejemplo: "nombre con espacios"

+0

No es una respuesta muy descriptiva, esto. '$ obj = (objeto) array (' nombre con espacios '=>' testing '); echo $ obj -> "nombre con espacios"; ' no funciona, necesitas las llaves. – Drarok

Cuestiones relacionadas