我收到错误
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 *吗?
任何帮助将不胜感激!
答案 0 :(得分:0)
这取决于列的数量及其类型。可能是(例如)其中一个列类型是BLOB,并且驱动程序确保它在行数据结构中有2GB可用来保存它(我之前在一些编写错误的JDBC驱动程序中看到过这一点)。
检查的最佳方法是逐渐将其他列(schedule
和year
除外)添加到第二个查询,直到失败。这可能会告诉你错误的列,如果有的话。
另外,将die
语句更改为:
die(mssql_get_last_message())
所以你可以希望看到失败的信息。
并且,基于您对此的回应:
无法使用DB-Library(例如ISQL)或ODBC 3.7或更早版本,无法将仅使用Unicode的归类或ntext数据中的Unicode数据发送到客户端。
看起来您的数据库与您用来访问它的库之间的功能不匹配。
由于Unicode通常被认为是好的东西,我会坚持认为,并且看看是否有更高版本的MSSQL(或底层的ODBC驱动程序)可以处理它。 / p>
This page也有一些建议可以解决您的问题:
当您收到此错误消息时: “仅限Unicode的归类或ntext数据中的Unicode数据不能 使用DB-Library(例如ISQL)或ODBC发送给客户端 版本3.7或更早。“
在/etc/freetds/freetds.conf中添加这两行(最后两行):
[global]
;tds version = 4.2
tds version = 8.0
client charset = UTF-8
您也可以在php.ini中编辑“charset”(但如果您以前在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"
答案 1 :(得分:0)
我在这里提到我的评论作为答案'因为它帮助了你,并且下次有人访问/面对类似的情况时,他/她可以参考这个(而不是扫描上述评论的全部字符串'系列)。
如果您针对SELECT *
表格发出MSSQL
,并且您的表格中包含一个空白字符串的TEXT
列,则
1)将该列的数据类型更改为varchar
2)将列的值从空白字符串重置为NULL
。
使SELECT *
正常工作。
(另一方面,我建议您不要使用SELECT *
,而只在查询中包含您真正需要的那些列。)