Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Difurlan

Simples sql dentro do PHP não funciona.

Recommended Posts

Olá amigos!

Estou quebrando a cabeça com um problema que está com cara de configuração do php.ini.

Aqui eu uso MS SQL 2000, com um banco de dados que tem algumas tabelas próprias e outras tabelas importadas de um outro banco de dados. Este outro bd (da onde importo tabelas e dados é do MSDE 2000 (pra quem não conhece é o sql server free, como o express). Windows 2003 server com o IIS 6...

 

Pois bem,

em outras linguagens como ASP e VB eu consigo acessar sem problemas as tabelas importadas do banco de dados, mas no php não!

O erro apresentado é este:

 

Warning: mssql_query() [function.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 C:\Inetpub\wwwroot\fin\controle_login.php on line 20

 

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\wwwroot\fin\controle_login.php on line 20

 

A linha 20 é esta abaixo:

 

if ($result = mssql_query($query))

 

(a linha 19 é esta: $query = "Select * From pessoa"; )

 

A TABELA PESSOA vem na importação.

 

Se eu mudo o select para ( * from movimentacao ) funciona, porque movimentacao foi criada no banco que estou trabalhando.

 

 

Fiz algumas mudanças em meu php.ini e estou postando o codigo dele aqui também.

 

Se alguém puder me ajudar aqui

desde já agradeço a gentileza!

 

Abraços.

 

 

*** Tirei o php.ini daqui, pois o pessoal devia estar se assustando com o tamanho do post.

 

Por favor pessoal... alguém já deve ter passado por problema similar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, o que acontece se você tentar executar esta query diretamente no QueryAnalizer (ou similares), já que você está usando banco MSSQL?

 

Qual a estrutura desta tabela "pessoa"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o mssql ta habilitado no php.ini?

sim, está habilitado.!

Como disse, ele acessa o sql server, mas é a determinada tabela (que é importada do MSDE 2000) que ele não consegue visualizar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, o que acontece se você tentar executar esta query diretamente no QueryAnalizer (ou similares), já que você está usando banco MSSQL?

 

Qual a estrutura desta tabela "pessoa"?

 

Olá!

Se eu executar no query analyzer (select * from pessoa) ele me retorna todos os valores. tudo certinho.

Assim como se eu usar uma ASP... ou VB. Volta certinho.

 

Observem os negritos.

Obs também: Na tabela que funciona, não existe campo ntext.

 

no PHP, volta isso aqui ó:

Warning: mssql_query() [function.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 C:\Inetpub\wwwroot\fin\controle_login.php on line 20

 

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\wwwroot\fin\controle_login.php on line 20

 

 

 

estrutura da TABELA PESSOA:

idPessoa - numeric - 9

Nome - nvarchar - 255 - allow nulls

TipoPessoa - tinyint - 1

sexo - nvarchar - 10 - allow nulls

data nascimento - datetime - 8 - allow nulls

EstadoCivil - nvarchar -15 - allow nulls

CartIdentidade - nvarchar - 50 - allow nulls

CPF - nvarchar - 30 - allow nulls

idProfissao - numeric - 9 - allow nulls

Nacionalidade - nvarchar - 100 - allow nulls

tratamento - nvarchar - 15 - allow nulls

CNPJ - nvarchar - 30 - allow nulls

InscrEstadual - nvarchar - 50 - allow nulls

OAB - nvarchar - 20 - allow nulls

Escritorio - bit - 1

Login - nvarchar - 20 - allow nulls

Senha - nvarchar - 50 - allow nulls

Obs - ntext - 15 - allow nulls

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu php.ini procure algo semelhante a isto:

mssql.textsize

Se estiver comentado (ponto e vírgula no início), descomente e altere o valor para -1

 

[]'s ;)

 

Amigo,

eu já havia mudado este detalhe, pois vi em um outro post neste mesmo forum que poderia ser isso o meu problema.

 

eis aí embaixo a parte que nos referimos....

 

 

; Valid range 0 - 2147483647. Default = 4096.

;mssql.textlimit = 4096

 

; ------->>>>>>>>>>>>> MUDEI AQUI <<<<<<<<<<<<<-----------------------

mssql.textlimit = -1

; ------->>>>>>>>>>>>> MUDEI AQUI <<<<<<<<<<<<<-----------------------

 

; Valid range 0 - 2147483647. Default = 4096.

;mssql.textsize = 4096

 

; ------->>>>>>>>>>>>> MUDEI AQUI <<<<<<<<<<<<<-----------------------

mssql.textsize = -1

; ------->>>>>>>>>>>>> MUDEI AQUI <<<<<<<<<<<<<-----------------------

 

; Limits the number of records in each batch. 0 = all records in one batch.

;mssql.batchsize = 0

 

; Specify how datetime and datetim4 columns are returned

; On => Returns data converted to SQL server settings

; Off => Returns values as YYYY-MM-DD hh:mm:ss

;mssql.datetimeconvert = On

 

; ------->>>>>>>>>>>>> MUDEI AQUI <<<<<<<<<<<<<-----------------------

mssql.datetimeconvert = Off

; ------->>>>>>>>>>>>> MUDEI AQUI <<<<<<<<<<<<<-----------------------

 

; Use NT authentication when connecting to the server

mssql.secure_connection = Off

 

 

 

Caso queiram dar uma olhada no php.ini por inteiro, eu posso postá-lo.

Obrigado pela atenção novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquisei o erro e encontrei um post que o cara da algumas soluções, caso as configurações( que você fez no php.ini ) não surtam efeito você pode tentar uma das duas soluções que o cara forneceu:

 

Solution for the following Error:

 

Warning: mssql_query() [function.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.

 

This is because you are using column types of like ntext instead of text. There are 2 solutions.

 

1. Change all ntext column types to text or

2. Your query must look like: SELECT CAST(field1 AS TEXT) AS field1 FROM table

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquisei o erro e encontrei um post que o cara da algumas soluções, caso as configurações( que você fez no php.ini ) não surtam efeito você pode tentar uma das duas soluções que o cara forneceu:

 

Solution for the following Error:

 

Warning: mssql_query() [function.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.

 

This is because you are using column types of like ntext instead of text. There are 2 solutions.

 

1. Change all ntext column types to text or

2. Your query must look like: SELECT CAST(field1 AS TEXT) AS field1 FROM table

 

Eita rapaz bom de php!!!!

funfou legal! Optei pela segunda opção, ao invés de mudar a estrutura do banco. (já que na importação costumo fazer a importação integral, campos e dados).

 

Também tentei criar uma tabela chamada Pessoa1 no mesmo banco, com os mesmo tipos da tbl Pessoa, pois pensei que poderia ser algo na importação dos dados do MSDE 2000. Resultado: Não funcionou.

 

O Problema é o tal do ntext!!! Ahhh Php....

 

Abraços e Muito Obrigado pela gentileza dispensada galera!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.