php mssql select*不工作

php mssql select*不工作,php,sql-server-2008,Php,Sql Server 2008,我发现了错误 No data! (sqlJadual) 从这个查询 mssql_query("SELECT * from tblstatusjadual where idjadual like '1%' and tahun='2011' order by idjadual") or die('No data! (sqlJadual)'); 但是,当我把它改成 mssql

我发现了错误

No data! (sqlJadual)
从这个查询

mssql_query("SELECT * 
             from tblstatusjadual 
             where idjadual like '1%' and 
                   tahun='2011' 
             order by idjadual") or die('No data! (sqlJadual)');
但是,当我把它改成

mssql_query("SELECT idjadual,status 
             from tblstatusjadual 
             where idjadual like '1%' and 
             tahun='2011' 
             order by idjadual") or die('No data! (sqlJadual)');
它很好用

如果我只从2个字段中选择,这是可以的,但是当我想要选择超过15个字段时,查询就会变得冗长和混乱

我的问题是mssql在查询中不支持select*


任何帮助都将不胜感激

这取决于列的数量及其类型。可能是(例如)其中一种列类型是BLOB,而驱动程序正在确保行数据结构中有2GB可用来容纳它(我以前在一些写得不好的JDBC驱动程序中见过这种情况)

检查这一点的最佳方法是逐步将其他列(除了
计划
年份
)添加到第二个查询中,直到查询失败。这可能会告诉你错误的专栏,如果有的话

另外,将
die
语句更改为如下内容:

die(mssql_get_last_message())
因此,您有希望看到失败消息是什么

根据你对此的回应:

只能使用Unicode排序规则或ntext数据中的Unicode数据不能发送到使用DB Library(如ISQL)或ODBC版本3.7或更早版本的客户端

看起来您的数据库和用于访问它的库之间的功能不匹配

由于Unicode被普遍认为是一件好事,我想说的是,坚持下去,看看是否有更高版本的MSSQL(或底层ODBC驱动程序)可以处理它

还有一些建议可以解决您的问题:


当您收到此错误消息时: “仅Unicode排序规则或ntext数据中的Unicode数据不能 可以使用DB库(如ISQL)或ODBC发送到客户端 版本3.7或更早。”

在/etc/freetds/freetds.conf中添加这两行(最后两行):

您也可以在php.ini中编辑“charset”(但如果您以前在freetds.conf中编辑过,则不需要):


我在这里提到我的评论是为了回答这个问题,因为这对你很有帮助,下次有人访问/面临类似情况时,他/她可能会引用这个(而不是浏览上述评论系列的整个字符串)

如果您针对
MSSQL
表发出
SELECT*
,并且您的表包含带有空白字符串的
TEXT
列,则您可以

1) 将该列的数据类型更改为
varchar

2) 将列的值从空白字符串重置为
NULL

要使
工作,请选择*


(另一方面,我建议您不要使用
SELECT*
,而是只在查询中包含真正需要的列。)

您的表中是否有
Text
字段?当我试图在包含
文本
列和空字符串的表上
选择*
时,出现了这个问题。我修复了将该列的数据类型更改为varchar的问题。我的列中有一个空字符串作为值,这就是为什么
SELECT*
失败的原因…进入MYSQL数据库,尝试将sql查询直接粘贴到上面的查询搜索中。如果有结果,那么mssql_查询函数有问题。从视觉上看,您的查询是正确的。选择*获取所有行。@BrandenStilgarSueper:我想你指的是MSSQL而不是MYSQL:-),选择*获取所有列,而不是行。使用
die(MSSQL\u get\u last\u message())
进行更好的调试。@verility:当我使用die(MSSQL\u get\u last\u message()时)这是一个错误
Unicode-only排序规则中的Unicode数据或无法使用DB-Library(如ISQL)或ODBC版本3.7或更早版本将ntext数据发送到客户端。
我将尝试此方法,并返回结果。
[global]
;tds version = 4.2
tds version = 8.0
client charset = UTF-8
; 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"