Nombre de tabla con espacios

Hola experto,
Llevo ya 2 días que no salgo de un bache y es que estoy volviéndome loco. Estoy llevando a cabo un panel de control en PHP el cual se conecta a una base de datos SQL.
La cuestión es que tengo un formulario en el que mando dos variables "nombre" y "prefijo". Y después con esas dos variables realizo una consulta SQL en donde quiero crear una tabla cuyo nombre de tabla sea el contenido de la variable "nombre".
El error me surge cuando el contenido de la variable "nombre" contiene espacios, solo me reconoce la primera palabra hasta el espacio y luego me dice que a partir de ahí da error.
He intentado pasar el contenido a otra variable creada por mi, pero no funciona.
Por favor necesito tu ayuda.
Te pego el código de esta parte:
$createSQL = sprintf("CREATE TABLE ".$_POST['nombre']." (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, FECHA VARCHAR(10) NOT NULL, CONTACTO VARCHAR(30) NOT NULL)");
mysql_select_db($database_CONEXION, $CONEXION);
$Result1 = mysql_query($createSQL, $CONEXION) or die(mysql_error());

1 Respuesta

Respuesta
1
Muy sencillo, no es muy recomendable el uso de espacios por compatibilidad con programas antiguos pero la solución es poner comillas simples.
Ejemplo:
CREATE TABLE `Datos Iniciales` (
`Id_Campo` TINYINT NOT NULL ,
`Nombre Persona` VARCHAR( 20 ) NOT NULL ,
`Direccion` VARCHAR( 20 ) NOT NULL
);
En tu casao
$createSQL = sprintf("CREATE TABLE `".$_POST['nombre']."` (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, FECHA VARCHAR(10) NOT NULL, CONTACTO VARCHAR(30) NOT NULL)");
mysql_select_db($database_CONEXION, $CONEXION);
$Result1 = mysql_query($createSQL, $CONEXION) or die(mysql_error());
Venga Suerte con ese panel.
Hace tiempo ya que lo intenté, de todas formas he vuelto ha hacerlo como tu me has dicho pero nada. Me da el siguiente 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 ''aa bb' (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, FECHA VARCH
¿No hay alguna forma de pasarlo a otra variable y después volvarla o algo así?
¿Qué versión de MySQL tienes?
Voy a intentar ejecutar el código en mi maquina y ahora te cuento.
¿OTra pregunta?
El código de ejemplo que te he pasado funciona OK, en tu maquina.
Es por descartar fallos de sintaxis a la hora de construir la sentencia.
Otra cosa, copia literalmente esto
$createSQL = "CREATE TABLE `".$_POST['nombre']."` (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, FECHA VARCHAR(10) NOT NULL, CONTACTO VARCHAR(30) NOT NULL)";
mysql_select_db($database_CONEXION, $CONEXION);
$Result1 = mysql_query($createSQL) or die(mysql_error());
Y fíjate que las comillas simples son: ` y no ' ni "
muy importante, pues las de tipo ' y " PHP las interpreta y las elimina.
También antes de lanzar la consulta, haz un echo ("$createSQL") para si la construcción de la sentencia es correcta.
Venga ya me cuentas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas