Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

Estas en el tema de Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ en el foro de PHP en Foros del Web. Hola buen dia. Mi problema es, que tengo una tabla pvcatlogstatus en mi base de datos, esa tabla tiene una columna de tipo datetime que ...
  #1 (permalink)  
Antiguo 03/04/2013, 14:56
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

Hola buen dia.

Mi problema es, que tengo una tabla pvcatlogstatus en mi base de datos, esa tabla tiene una columna de tipo datetime que se llama FechaDiseño. Cuando hago la consulta en PHP:

$query= "SELECT convert(varchar(24),[FechaDiseño],121) as 'FechaDiseño' FROM pvcatlogstatus where cve_logo='xxxx'";

me manda el siguiente error:

Array ( [0] => Array ( [0] => 42S22 [SQLSTATE] => 42S22 [1] => 207 [code] => 207 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]El nombre de columna 'FechaDiseño' no es v�lido. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]El nombre de columna 'FechaDiseño' no es v�lido. ) )

Mi sospecha es que la consulta no reconoce la letra "ñ"

¿Alguien podría orientarme ayudándome a encontrar el problema y resolver por favor?
  #2 (permalink)  
Antiguo 03/04/2013, 15:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

Cita:
¿Alguien podría orientarme ayudándome a encontrar el problema y resolver por favor?
No uses caracteres extendidos en las bases de datos.
Siempre dan problemas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/04/2013, 15:10
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

Gracias por responder gnzsoloyo pero ya son años de información y ya no puedo cambiar el nombre de esa columna. Tendría que hacer muchas modificaciones.

Menciono también que estoy utilizando SQL server y en el Management studio no tengo problemas al hacer la misma consulta.
  #4 (permalink)  
Antiguo 03/04/2013, 15:13
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

verifica la codificacion de tus archivos, ocupa cabeceras utf-8 y codifica los archivos tambien en utf8
  #5 (permalink)  
Antiguo 03/04/2013, 15:24
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

alex1084 ya tengo las cabeceras utf-8 y tambien los archivos codificados
  #6 (permalink)  
Antiguo 03/04/2013, 16:18
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

Hola de nuevo.

Creo que ya lo solucione de la siguiente forma:

$result=sqlsrv_query($conn,utf8_decode($query));

pero ahora me sale el siguiente error:

Notice: Undefined index: FechaDiseño in C:\xampp\htdocs\proy\consultLogo.php on line 15
  #7 (permalink)  
Antiguo 03/04/2013, 16:42
 
Fecha de Ingreso: abril-2013
Ubicación: Sevilla
Mensajes: 23
Antigüedad: 11 años
Puntos: 0
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

estas haciendo referencia a un indice que no esta definido.
prueba a controlar su existencia con isset()

http://www.php.net/manual/es/function.isset.php

de todas formas si al decodificar el utf-8 te funciona, indica que la base de datos no esta en utf-8...

Yo tambien opino que no deben usarse esos caracteres en base de datos ni en ningun sitio, puede ser una buena inversion la revision de tu codigo para solventar el cambio, pues te puede ahorrar complicaciones futuras como esta si migras la base de datos, si cambias la version y esta no la soporta de la misma forma o cualquier otra circunstancia.

saludos
  #8 (permalink)  
Antiguo 03/04/2013, 17:28
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

Ya comprobé la existencia y me manda el mensaje que no existe pero no entiendo porque esa variable si esta ahí.

Pongo el código para que lo revisen y me ayuden a resolverlo:

Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/html; charset=UTF-8');
  3. require('conexion.php');
  4. //Consulta fecha de impresion logo
  5. $query= "SELECT Sucursal, cve_logo, Estatus, convert(varchar(24),Fecha,121) as Fecha, convert(varchar(24),FechaImpresion,121) as FechaImpresion, convert(varchar(24),[FechaDiseño],121) as 'FechaDiseño', convert(varchar(24),Terminodiseno,121) as TerminoDiseno FROM pvcatlogstatus where cve_logo='LP9394'";
  6. $result=sqlsrv_query($conn,utf8_decode($query));
  7. if($result===false){
  8. die(print_r(sqlsrv_errors(),true));
  9. }
  10. echo "<table class='pvcatlogstatus'>";
  11. echo "<caption>Tabla de consulta de fecha de impresion (pvcatlogstatus)</caption>";
  12. echo "<thead><tr><td>Sucursal</td><td>cve_logo</td><td>Estatus</td><td>Fecha</td><td>FechaImpresion</td><td>FechaDiseño</td><td>TerminoDiseno</td></tr></thead>";
  13.  
  14. while($row = sqlsrv_fetch_array($result,SQLSRV_FETCH_BOTH)){
  15. echo "<tr>"."<td>".$row['Sucursal']."</td>"."<td>".$row['cve_logo']."</td>"."<td>".$row['Estatus']."</td>"."<td>".$row['Fecha']."</td>"."<td>".$row['FechaImpresion']."</td>"."<td>".$row['FechaDiseño']."</td>"."<td>".$row['TerminoDiseno']."</td>".'<br />'."</tr>";
  16. }
  17. echo "</table>";
  18. sqlsrv_free_stmt($result);
  19. ?>
  #9 (permalink)  
Antiguo 04/04/2013, 00:45
 
Fecha de Ingreso: abril-2013
Ubicación: Sevilla
Mensajes: 23
Antigüedad: 11 años
Puntos: 0
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

Seguramente sea un problema de codificacion.
Te has asegurado que la codificacion del propio php es utf-8?
Que te muestre una ñ no quiere decir que el caracter sea el mismo que el que está en el titulo de la tabla, pues el navegador ya te codifica los caracteres en base a la configuracion, lo mismo con el documento php, y la propia base de datos.

prueba establecerle la cod. del documento php a utf-8, si no prueba a ponerla en ansi...
  #10 (permalink)  
Antiguo 04/04/2013, 04:51
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

En MySQL hay que configurar la conexión como UTF-8 también. No se si con SQLServer también.

EDIT:
Prueba conectando así:
Código PHP:
Ver original
  1. $connectionInfo = array( "Database"=>"AdventureWorks", "CharacterSet" => "UTF-8");

Extraído de:
http://msdn.microsoft.com/en-us/libr...=sql.105).aspx


También te indica como hacerlo con PDO

Última edición por alyciashape; 04/04/2013 a las 04:58
  #11 (permalink)  
Antiguo 04/04/2013, 09:12
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

alyciashape Ya probé conectando de esa forma, pero aun sigue igual.

que pasa si cambio la Intercalacion a la base de datos?

¿Puedo perder la base de datos? en estos momentos tiene una intercalación de Modern_Spanish_CI_AS
  #12 (permalink)  
Antiguo 04/04/2013, 10:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

la intercalacion de la base de datos no tiene que ver con tu problema.....la intercalacion lo que hace es validar el alfabeto(caracteres especiales,Ñ's, acentos etc) tu intercalacion es la correcta, si la cambiaras no afectarias la base de datos, puedes probar con las sentencias

http://msdn.microsoft.com/es-MX/library/ms184391.aspx

http://microsoftsqlsecret.fullblog.c...ql-server.html

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 05/04/2013, 13:19
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Consulta SQL en PHP no reconoce el nombre de columna con la letra ñ

Cita:
Iniciado por Sevillacode Ver Mensaje
Seguramente sea un problema de codificacion.
Te has asegurado que la codificacion del propio php es utf-8?
Que te muestre una ñ no quiere decir que el caracter sea el mismo que el que está en el titulo de la tabla, pues el navegador ya te codifica los caracteres en base a la configuracion, lo mismo con el documento php, y la propia base de datos.

prueba establecerle la cod. del documento php a utf-8, si no prueba a ponerla en ansi...
Ya lo solucione gracias a todos por su ayuda, tenia mis archivos php en codificacion utf8 y los cambie a ANSI y ya me funciono. Tarde bastante y nunca pese que fuera eso, nuevamente GRACIAS.

Etiquetas: consulta+sql, php+basedatos
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 20:46.