Foros del Web » Programando para Internet » PHP »

Usar una variable de array en mysql_query

Estas en el tema de Usar una variable de array en mysql_query en el foro de PHP en Foros del Web. Hola amigos, Tengo el siguiente problema. Estoy tratando de hacer un instalador automatico de tablas en mysql. y tengo lo siguiente tablas.php ( este es ...
  #1 (permalink)  
Antiguo 22/01/2009, 20:41
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Usar una variable de array en mysql_query

Hola amigos,
Tengo el siguiente problema.
Estoy tratando de hacer un instalador automatico de tablas en mysql. y tengo lo siguiente

tablas.php ( este es uno solo, por que si no es muy largo )
Código PHP:
<?
$tablas 
= array(
        
"noticias" => array(
                
"nombre" => "Noticias",
                
"instalar_sql" => "CREATE TABLE noticias (  id_noticia int(4) AUTO_INCREMENT NOT NULL,  autor varchar(255),  titulo varchar(255),  categoria varchar(255), articulo varchar(2000000), hora varchar(255),  dia varchar(255), mes varchar(255), año varchar(255), fecha DATETIME NOT NULL,  noticia blob, KEY(id_noticia))",
                
"borrar_sql" => "DROP TABLE noticias",
                
"check_sql" => "SELECT COUNT(*) FROM noticias",
                
"seccion" => "blog",
                ),
                        );
?>

y el archivo donde lo utilizo es el siguiente

Código PHP:
<?

    
foreach ($tablas as $key => $value) {
        if (
$_POST['instalar_blog'] == TRUE) {
            if (
$tablas[$key][seccion] == "blog") {
                
$sql $tablas[$key][instalar_sql];
                
mysql_query("$sql"$conectarDB);
            }
        }
        if (
$tablas[$key][seccion] == "general") {
            
mysql_query("{$tablas[$key][instalar_sql]}"$conectarDB);
        }
        
        if (
mysql_query($tablas[$key][check_sql])) {
            echo 
"Tabla '".$tablas[$key][nombre]."' creada. <br>";
        }
        else {
            die(
"Error en la creacion de la tabla '".$tablas[$key][nombre]."'");
        }
    }


?>


La cosa es que probe de todo, pero el query no funciona, es como que no reconoce la variable $tablas[$key][instalar_sql]




Como seria la forma correcta ?



Desde ya muuchas gracias
  #2 (permalink)  
Antiguo 22/01/2009, 20:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Usar una variable de array en mysql_query

instalar_sql debe estar entre comillas simples o dobles, solo eso.

Edito:

Todos las referencias a los indices de la matriz que no sean con variable, deben estar entre comillas simples o dobles:

$tablas[$key]['check_sql']
$tablas[$key]['nombre']
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 22/01/2009, 21:03
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Usar una variable de array en mysql_query

"$tablas[$key]['instalar_sql']"

$tablas[$key]["instalar_sql"]


Las 2 formas me siguen dando error.


Edito

$tablas[$key]['instalar_sql'] Tambien me da error
  #4 (permalink)  
Antiguo 22/01/2009, 21:04
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Usar una variable de array en mysql_query

Y otra cosa. Al hacer un foreach por algo ponemos foreach($array as $key => $value). Me refiero a que no es nada práctico llamar a $array[$key] cuando podemos hacerlo simplemente usando $value:

Código PHP:
mysql_query($value['instalar_sql'], $conectarDB); 

EDITO: Da algún error? Cuál?
  #5 (permalink)  
Antiguo 22/01/2009, 21:14
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Usar una variable de array en mysql_query

Ah, esa no la sabia.

Pero probe como dijiste, y da error igual.

"Error en la creacion de latabla 'Noticias'"






Edito:

O sea, lo acabo de probar usando echo $value['instalar_sql']; y anda perfecto.
el problema es con el Query.
  #6 (permalink)  
Antiguo 22/01/2009, 21:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Usar una variable de array en mysql_query

Prueba:
Código PHP:
if ($_POST['instalar_blog'] == TRUE) {
       if (
$tablas['noticias']['seccion'] == "blog") {
                
$sql $tablas['noticias']['instalar_sql'];
                
mysql_query($sql$conectarDB) or die(mysql_error);
       }

Y nos dices que error te da... si es que da error
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 22/01/2009 a las 21:17 Razón: Indice de $tabla
  #7 (permalink)  
Antiguo 22/01/2009, 21:24
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Usar una variable de array en mysql_query

devuelve

edit. faltaban los () al error



"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '±o varchar(255), fecha DATETIME NOT NULL, noticia blob, KEY(id_noticia))' at line 1"



sera la Ñ del campo "año" ?




Ya esta.
era por que una tabla usa una Ñ
  #8 (permalink)  
Antiguo 22/01/2009, 21:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Usar una variable de array en mysql_query

año no es un nombre adecuado para un campo en una tabla, no puedes usar caracteres especiales, solo letras, numeros y guiones bajos.

Hay un tipo de campo especifico para fecha en MySQL, no se cual es, porque nunca lo he usado, siempre uso int (10) para timestamps
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 22/01/2009, 21:31
Avatar de Breaklo  
Fecha de Ingreso: junio-2008
Ubicación: Buenos Aires
Mensajes: 95
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Usar una variable de array en mysql_query

Listo, ya esta, cambio el nombre a ese campo


Te agradezco muchisimo tu ayuda ! ^^
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 09:09.