Foros del Web » Programando para Internet » PHP »

Error PHP: stdClass as array

Estas en el tema de Error PHP: stdClass as array en el foro de PHP en Foros del Web. ¿Porqué obtengo este error en el siguiente fragmento de código? "PHP Fatal error: Cannot use object of type stdClass as array" Código PHP: <?PHP } else { ...
  #1 (permalink)  
Antiguo 14/02/2013, 21:07
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 15 años
Puntos: 0
Error PHP: stdClass as array

¿Porqué obtengo este error en el siguiente fragmento de código?

"PHP Fatal error: Cannot use object of type stdClass as array"

Código PHP:
<?PHP
} else {
if(
$_REQUEST['act'] == 'delete'){
if(!
is_numeric($_GET['id'])){ die("El ID del mensaje debe de ser numerico."); }
$result mysql_query("SELECT recipient FROM messages WHERE id='".$_GET['id']."'");
$row mysql_fetch_object($result);
if(
$row["recipient"] == $user->getuserinfo(username)){
(
"DELETE FROM messages WHERE id='".$security->makesafe($_GET['id'])."'");
} else {
die(
"Al parecer, este mensaje no te corresponde.");
}
}
if(
$_POST['sentbox'] || $_GET['box'] == 'sentbox'){
$box "sentbox";
} else {
$box "inbox";

?>
El error_log me indica que el error se encuentra en la línea de:

Código PHP:
$row mysql_fetch_object($result); 
Gracias.
  #2 (permalink)  
Antiguo 14/02/2013, 21:12
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Error PHP: stdClass as array

Porque debes acceder a los datos como si fueran propiedades:

Código PHP:
Ver original
  1. <?php
  2. mysql_connect("nombre_anfitrión", "usuario", "contraseña");
  3. $resultado = mysql_query("select * from mitabla");
  4. while ($fila = mysql_fetch_object($resultado)) {
  5.     echo $fila->id_usuario;
  6.     echo $fila->nombre_completo;
  7. }
  8. mysql_free_result($resultado);

Cita:
Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro. En su lugar, deberían usarse las extensiones MySQLi o PDO_MySQL.

http://www.php.net/manual/es/functio...tch-object.php
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 14/02/2013, 21:28
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 15 años
Puntos: 0
Respuesta: Error PHP: stdClass as array

Cita:
Iniciado por andresdzphp Ver Mensaje
Porque debes acceder a los datos como si fueran propiedades:

Código PHP:
Ver original
  1. <?php
  2. mysql_connect("nombre_anfitrión", "usuario", "contraseña");
  3. $resultado = mysql_query("select * from mitabla");
  4. while ($fila = mysql_fetch_object($resultado)) {
  5.     echo $fila->id_usuario;
  6.     echo $fila->nombre_completo;
  7. }
  8. mysql_free_result($resultado);




[url]http://www.php.net/manual/es/function.mysql-fetch-object.php[/url]
Gracias por la ayuda pero no se como empezar a editar o reemplazar el código, me considero novato en PHP.

Aquí pegue el archivo PHP completo: http://paste.ubuntu.com/1655094/
La línea 96 es la que me da el problema, no me podrías decir por que lo tengo que reemplazar exactamente si no es mucho trabajo? Disculpa la molestia, la haría yo si solo tuviera el conocimiento :/
  #4 (permalink)  
Antiguo 14/02/2013, 21:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error PHP: stdClass as array

Simplemente ve el Manual, estas usando mysql_fetch_object, el cual te regresa un objeto, existen otras dos funciones, mysql_fetch_array y mysql_fetch_num, lee en el manual para que sirve cada una y ya que entiendas vas a poder saber cual usar.

Saludos.
  #5 (permalink)  
Antiguo 14/02/2013, 21:46
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Error PHP: stdClass as array

Como estas usando mysql_fetch_object debes usar $row->recipient en vez de $row["recipient"].

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: as, mysql, select, stdclass
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:16.