Foros del Web » Programando para Internet » PHP »

Problema para leer de MSSQL un campo tipo xml

Estas en el tema de Problema para leer de MSSQL un campo tipo xml en el foro de PHP en Foros del Web. Hola Alguien sabe como leer desde PHP, un campo de una tabla en SQL Server que tiene el tipo "xml". Cuando hago la consulta de: ...
  #1 (permalink)  
Antiguo 03/10/2011, 09:28
 
Fecha de Ingreso: octubre-2011
Mensajes: 4
Antigüedad: 12 años, 6 meses
Puntos: 0
Problema para leer de MSSQL un campo tipo xml

Hola

Alguien sabe como leer desde PHP, un campo de una tabla en SQL Server que tiene el tipo "xml".

Cuando hago la consulta de:

$result=mssql_query("SELECT id, campoXML FROM dbo.T_ARCHIVOXML",$link);

Si solo pongo el campo id me devuelve correcto, pero cuando añado la columna donde tengo el xml incrustado, la select no devuelve nada?



Gracias
  #2 (permalink)  
Antiguo 03/10/2011, 09:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Problema para leer de MSSQL un campo tipo xml

¿Verificaste el código fuente?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 03/10/2011, 10:00
 
Fecha de Ingreso: octubre-2011
Mensajes: 4
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema para leer de MSSQL un campo tipo xml

La tabla de MSSQL tienen dos campos:

Id tipo int
CampoXML tipo xml

Desde PHP si hago una select a la tabla solo del campo int, funciona correctamente si lo hago de campo xml no devuelve ninguna fila...

No encuentro ningun error en el código, si he encontrado que para tener soporte a tipos de campos XML en SQL es necesario utilizar Drivers ODBC de pago!!!


After extensive research trying to get PHP on Linux communicating with SQL Server 2005 and 2008 including support for all Unicode, MAX and XML data types I could not find any open source solutions...yes, I spent a lot of time trying to get FreeTDS to work to no avail.
  #4 (permalink)  
Antiguo 03/10/2011, 11:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Problema para leer de MSSQL un campo tipo xml

Por eso, verificaste el código fuente de lo que trae la consulta, es decir click derecho con el ratón y verificar código fuente, a ver si trae algo más. También coloca al principio del archivo de PHP estas líneas
Código PHP:
Ver original
  1. <?php
  2. ini_set('display_errors', true);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 04/10/2011, 02:29
 
Fecha de Ingreso: octubre-2011
Mensajes: 4
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema para leer de MSSQL un campo tipo xml

Gracias,
con la verificacion del codigo, he ganado algo más...

Recibo el siguiente error:
Warning: mssql_query(): message: Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (severity 16) in /var/www/fe/detallef1.php on line 34 Warning: mssql_query(): General SQL Server error: Check messages from the SQL Server (severity 16) in /var/www/fe/detallef1.php on line 34 Warning: mssql_query(): Query failed in /var/www/fe/detallef1.php on line 34 Warning: mssql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/fe/detallef1.php on line 37 No records found Warning: mssql_free_result() expects parameter 1 to be resource, boolean given in /var/www/fe/detallef1.php on line 48

Por lo que he podido investigar, con el conector mssql_connect hay una limitación de longitud, y como el campo es un xml incrustado es muy grande, supongo vienen los problemas. Tengo los xml incrustados en SQL server 2008.

Soluciones buscar un driver ODBC y montar el PHP sobre windows, ahora lo tengo en linux, también he probado las clases ezSQL y me fallan igual.

Si se os ocurre otra solución hacermelo saber, gracias.
  #6 (permalink)  
Antiguo 04/10/2011, 08:15
 
Fecha de Ingreso: octubre-2011
Mensajes: 4
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema para leer de MSSQL un campo tipo xml

SOLUCIONADO

MSSQLNewbie 19-Sep-2011 08:34
Here are some things you might need to know:
1. Install mssql support for Debian (Lenny/Squeeze):
apt-get install php5-sybase

2. When you got this error message:
"Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier."

In /etc/freetds/freetds.conf add these two lines (last two):
[global]
;tds version = 4.2
tds version = 8.0
client charset = UTF-8

You can edit "charset" in php.ini too (but you don't need if you did it previously in freetds.conf):
; Specify client character set..
; If empty or not set the client charset from freetds.comf is used
; This is only used when compiled with FreeTDS
mssql.charset = "UTF-8"

3. Use nchar/nvarchar/ntext column types if you need unicode support.

Etiquetas: mssql, sql, tabla, tipo, xml, campos
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 21:43.