![](/img/trans.png)
[英]SELECT on tables with . (dot) in tablename (MSSQL/PHP) not working?
[英]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驅動程序中已經看到過)。
最好的檢查方法是將其他列( schedule
和year
除外)逐漸添加到第二個查詢中,直到失敗為止。 如果有,那可能會告訴您錯誤的一欄。
另外,將您的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.