2012-08-14 66 views
1

我收到错误PHP 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 *在他们的查询中?

任何帮助,将不胜感激!

+0

你在你的表有一个'Text'场?当我尝试在包含带空字符串的“Text”列的表上“SELECT *”时,发生了这个问题。我修正了它将该列的数据类型更改为varchar。我的专栏有空白的字符串作为值之一,这就是为什么'SELECT *'失败的原因... – verisimilitude 2012-08-14 05:09:10

+0

进入你的MYSQL数据库,并尝试将sql查询直接粘贴到那里的查询搜索。如果它有结果,那么mssql_query函数有问题。从视觉上看,它的查询是正确的。选择*获取所有行。 – 2012-08-14 05:13:22

+0

@BrandenStilgarSueper:我假设你的意思是MSSQL而不是MYSQL :-)并选择*获取所有_columns,_不是行。 – paxdiablo 2012-08-14 05:14:39

回答

0

我提到这里的答案“因为它帮你,下一次有人访问我的意见/面临着类似的一种情况,他/她可参照本(而不是扫描上述评论'系列的全部字符串)。

如果您发出SELECT *针对MSSQL表和你的表中包含一个TEXT列有一个空字符串,你要么

1)更改该列的以varchar
2数据类型)重置的价值从空白字符串到NULL

使SELECT *工作。

(在另一方面,我给你推荐的,而不是使用SELECT *,你只包括在您的查询,你真正需要的那些列。)

0

这取决于列的数量和它们的类型。这可能是(例如)其中一种列类型是BLOB,并且驱动程序确保它在行数据结构中有2GB用于存放它(我曾在一些写得不好的JDBC驱动程序中看到过)。

最好的检查方法是逐渐将其他列(scheduleyear除外)添加到第二个查询中,直到失败。这可能会告诉你错误的列,如果有的话。

此外,您die声明更改为类似:

die(mssql_get_last_message()) 

这样你就可以看到希望的失败消息是什么。

,并根据你的回应是:

在仅Unicode归类或ntext数据

Unicode数据不能被发送到使用DB-Library(如ISQL)或ODBC 3.7版客户端或更早。

它看起来像数据库和你用来访问它的库之间的功能不匹配。

因为Unicode通常被认为是好的的事情,我会坚持这一点,看看是否有更高版本的MSSQL(或底层的ODBC驱动程序)可以处理它。

This page也有一些建议,可以解决你的问题:


当你得到这个错误信息: “在仅Unicode归类或ntext数据Unicode数据不能 发送到使用DB客户端 - 图书馆(如ISQL)或ODBC版本号为或更低版本的“ ”。

在/etc/freetds/freetds.conf添加这两条线(去年二):

[global] 
;tds version = 4.2 
tds version = 8.0 
client charset = UTF-8 

您可以编辑在php.ini“字符集”太(但如果你没有,你不需要它以前在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" 
+0

我会尝试这种方法,并会返回结果。 – errorare 2012-08-14 05:33:17