Foros del Web » Programando para Internet » PHP »

Nombre de columnas de Tabla MySQl desde variable?

Estas en el tema de Nombre de columnas de Tabla MySQl desde variable? en el foro de PHP en Foros del Web. Hola gente! Tengo el siguiente código para crear una db: $sql = "CREATE TABLE IF NOT EXISTS $table ( `id` int(11) NOT NULL auto_increment, 'nombre' ...
  #1 (permalink)  
Antiguo 10/09/2010, 12:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Nombre de columnas de Tabla MySQl desde variable?

Hola gente!

Tengo el siguiente código para crear una db:

$sql = "CREATE TABLE IF NOT EXISTS $table (
`id` int(11) NOT NULL auto_increment,
'nombre' varchar(36) default NULL,

PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=54;";

$result = mysql_query($sql) or die("Error formatting table: ".mysql_error());
return $result;

Necesito poder cagar los nombres de las columnas desde una variable. Por ahí leí que sería algo así:

....
'{$nombre}' varchar(36) default NULL,
...

Pero no funciona, alguna sugerencia?
  #2 (permalink)  
Antiguo 10/09/2010, 12:55
Avatar de vertigo112  
Fecha de Ingreso: agosto-2006
Ubicación: Estado de Mexico
Mensajes: 25
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Nombre de columnas de Tabla MySQl desde variable?

no veo error en eso que haces de echo lo que colocas ahi esta correcto puedes meter cualquier nombre de campo o tabla con el simple echo de colocarlo como variable $variable lo unico que veop mal podria ser no metas los valores asi 'nombre' mejor dejalo como el anterior `id` intenta cambiar y eso.....

Última edición por GatorV; 15/09/2010 a las 10:22
  #3 (permalink)  
Antiguo 10/09/2010, 13:32
 
Fecha de Ingreso: abril-2008
Ubicación: Montevideo - Uruguay
Mensajes: 156
Antigüedad: 16 años
Puntos: 5
Respuesta: Nombre de columnas de Tabla MySQl desde variable?

Buenas!

Quizas este script te sea util para mostrar los CREATE de cada tabla. En la documentación de MySQL está especificado para que sirve cada una de las SQLs!

Código PHP:
Ver original
  1. $oCon = mysql_connect( 'BASE' , 'USER', 'PASS' );
  2.  mysql_select_db( 'BD' );
  3.  
  4.  $sSql = 'SHOW TABLES';
  5.  $rQuery = mysql_query( $sSql, $oCon );
  6.  
  7.  while( $aData = mysql_fetch_assoc($rQuery)) {
  8.      $sTableName = $aData[ 'Tables_in_xalok_mobile' ];
  9.  
  10.      $sSqlCreate = 'SHOW CREATE TABLE ' . $sTableName;
  11.      $rQueryCreate = mysql_query( $sSqlCreate );
  12.  
  13.      while( $aDataAux = mysql_fetch_assoc( $rQueryCreate )) {
  14.          echo '<pre>';
  15.          print_r( $aDataAux['Create Table'] );
  16.          echo '</pre>';
  17.      }
  18.  }

Espero te sea util ! :)
Saludos
__________________
--
Mi Portfolio Online! Visitalo!
--
  #4 (permalink)  
Antiguo 10/09/2010, 14:38
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Nombre de columnas de Tabla MySQl desde variable?

Acá pongo todo el código y a ver si queda más claro:

Código PHP:
<?php



include 'config.php';


$prueba "texto";
 
function 
install($table) {
    
$sql "DROP TABLE IF EXISTS $table;";
    
$result mysql_query($sql) or die("Error creating table: ".mysql_error());
    
    
$sql "CREATE TABLE IF NOT EXISTS $table (
              `id` int(11) NOT NULL auto_increment,
              `{$prueba}` varchar(36) default NULL,
              
              PRIMARY KEY  (`id`)
            ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=54;"
;
        
    
$result mysql_query($sql) or die("Error formatting table: ".mysql_error());
    return 
$result;
}

?>
En este ejemplo, necesito que el nombre de la segunda columna se cargue desde una variable. En este ejemplo se llama $prueba

Alguien podría darme un ejemplo y/o explicación de porque no funciona esto o porque algo que pareciera tan sencillo es tan difícil de encontrar!!??? :)
  #5 (permalink)  
Antiguo 10/09/2010, 15:47
Avatar de vertigo112  
Fecha de Ingreso: agosto-2006
Ubicación: Estado de Mexico
Mensajes: 25
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Nombre de columnas de Tabla MySQl desde variable?

Ok amigo primero deja decirte que lo que tienes ahi esta correcto ya lo he rectifivado y funciona, lo que creo que esta mal es eso del "config.php"

imagino que ahi tienes la conexion a tu server y usuario y pass bueno pues esa funcion que colocas ahi simplemente no funcionara ya que esa funcion no sabe esos parametro de conexion a la BD, una solucion seria meter dentro de la funcion una variable global con el Request de la conexion al server y listo haber si me explico para mas detalle te coloco la Clase que cree para tu ejemplo:

BD_SQL.php

Código PHP:
<?
class BD_SQL{
    
// variables de conexion
    
var $BaseDatos;
    var 
$Servidor;
    var 
$Usuario;
    var 
$Clave;    
    
// Identificador de conexion y Consultas
    
var $Conexion_ID 0;
    var 
$Consulta_ID 0;
    
// Constructor de la clase
    
function BD_SQL($bd "",$host ""$user ""$pass ""){
    
$this->BaseDatos $bd;
    
$this->Servidor $host;
    
$this->Usuario $user;
    
$this->Clave $pass;
    }
    
// Conexion a la Base de Datos
    
function conectar($bd$host$user$pass){
      if(
$bd != "")   $this->BaseDatos $bd;
      if(
$host != ""$this->Servidor $host;
      if(
$user != ""$this->Usuario $user;
      if(
$pass != ""$this->Clave $pass;
      
// Enlace con el servidor
      
$this->Conexion_ID mysql_connect($this->Servidor,$this->Usuario,$this->Clave);
      if(!
$this->Conexion_ID){
         return 
0;
        }
      
// Seleccionamos la Base de Datos
      
if(!@mysql_select_db($this->BaseDatos$this->Conexion_ID)){
        return 
0;
      } 
      return 
$this->Conexion_ID;
    }    
    
//
    
function creaTabla($sql){
    
$this->Consulta_ID = @mysql_query($sql$this->Conexion_ID);
    return 
$this->Consulta_ID;  
    }
// fin de la clase 
?>



ahora para poder usar:


[CENTER]
Código PHP:
require_once("BD_SQL.php");    // incluir la clase 
$conn = new BD_SQL();             // crear objeto de la calse
$conn->conectar('BaseDatos','servidor','usuario','password');   // parametros de conexion
        // valores de nombre de la tabla y nombre de el campo
    
$nomTabla 'nueva_tabla';
    
$nomCampo 'Nombrecampo';
    
// variable SQL igual a la que tienes    
    
$sql "CREATE TABLE IF NOT EXISTS $nomTabla (
              `id` int(11) NOT NULL auto_increment,
              `{$nomCampo}` varchar(36) default NULL,              
              PRIMARY KEY  (`id`)
            ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=54;"
;
        
// ejecuta y crea la Tabla            
$conn->creaTabla($sql); 

Última edición por GatorV; 15/09/2010 a las 10:22
  #6 (permalink)  
Antiguo 10/09/2010, 21:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Nombre de columnas de Tabla MySQl desde variable?

Espectacular! Funciona!! Muchas Gracias

Etiquetas: column, mysql, variables
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 02:57.