簡體   English   中英

PHP的MSSQL選擇*不起作用

[英]php mssql select * is not working

我收到錯誤

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驅動程序中已經看到過)。

最好的檢查方法是將其他列( scheduleyear除外)逐漸添加到第二個查詢中,直到失敗為止。 如果有,那可能會告訴您錯誤的一欄。

另外,將您的die聲明更改為以下內容:

die(mssql_get_last_message())

因此,您可以希望看到故障消息是什么。

並且,根據您對此的回答:

只能使用Unicode排序規則或ntext數據的Unicode數據不能使用DB-Library(例如ISQL)或ODBC 3.7或更早版本發送給客戶端。

您的數據庫和您用來訪問數據庫的庫之間的功能似乎不匹配。

由於Unicode通常被認為是一件好事,所以我堅持下去,看看是否有可以處理它的更高版本的MSSQL(或基礎的ODBC驅動程序)。

此頁面還提供一些建議,可以解決您的問題:


當您收到此錯誤消息時:“僅使用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中編輯“字符集”(但是如果您以前在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"

我在這里提到我的評論作為答案,因為它可以幫助您,下次任何人訪問/面對類似情況時,他/她都可以引用此評論(而不是掃描上述評論的全部內容)。

如果對MSSQL表發出SELECT * ,並且表中包含帶有空白字符串的TEXT列,則您要么

1)將該列的數據類型更改為varchar
2)將列的值從空白字符串重置為NULL

使SELECT *工作。

(另一方面,我建議您不要使用SELECT * ,而應在查詢中僅包含您真正需要的列。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM