PHP中的MSSQL查询问题与文本数据查询
我正在尝试用PHP进行查询,以连接MSSQL EXPRESS(2008 R2)数据库并从中提取数据。但是,当我从数据库中提取基于ntext的数据时,出现了一个错误 错误是 只能使用Unicode排序规则或ntext数据中的Unicode数据不能发送到使用DB Library(如ISQL)或ODBC版本3.7或更早版本的客户端。(严重程度16)英寸 我的剧本是PHP中的MSSQL查询问题与文本数据查询,php,Php,我正在尝试用PHP进行查询,以连接MSSQL EXPRESS(2008 R2)数据库并从中提取数据。但是,当我从数据库中提取基于ntext的数据时,出现了一个错误 错误是 只能使用Unicode排序规则或ntext数据中的Unicode数据不能发送到使用DB Library(如ISQL)或ODBC版本3.7或更早版本的客户端。(严重程度16)英寸 我的剧本是 $myServer = ".\SQLEXPRESS"; $myUser = "sa"; $myPass = "bl
$myServer = ".\SQLEXPRESS";
$myUser = "sa";
$myPass = "blablabla";
$myDB = "test";
//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");
//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB");
//declare the SQL statement that will query the database
$query = "SELECT * FROM dbo.table WHERE query='2'";
//$query .= "FROM dbo.table ";
//$query .= "WHERE query='2'";
//execute the SQL query and return records
$result = mssql_query($query);
$numRows = mssql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";
//display the results
while($row = mssql_fetch_array($result))
{
echo "<li>" . $row["query"]. "</li>";
}
//close the connection
mssql_close($dbhandle);
$myServer=“.\SQLEXPRESS”;
$myUser=“sa”;
$myPass=“blabla”;
$myDB=“测试”;
//与数据库的连接
$dbhandle=mssql\u connect($myServer、$myUser、$myPass)
或者死亡(“无法连接到$myServer上的SQL Server”);
//选择要使用的数据库
$selected=mssql\u select\u db($myDB,$dbhandle)
或者死亡(“无法打开数据库$myDB”);
//声明将查询数据库的SQL语句
$query=“从dbo.table中选择*,其中query='2';
//$query.=“FROM dbo.table”;
//$query.=“WHERE query='2'”;
//执行SQL查询并返回记录
$result=mssql_查询($query);
$numRows=mssql\u num\u行($result);
“回声”$努姆罗斯。“行”。($numRows==1?“:“s”)。“返回”;
//显示结果
while($row=mssql\u fetch\u数组($result))
{
回显“”$row[“query”]。“ ”;
}
//关闭连接
mssql_关闭($dbhandle);
在此方面的任何帮助都将不胜感激
谢谢……mssql\u query()上的注释中的两个选项
从表中选择CAST(字段1作为文本)作为字段1
- 将
中的版本从4.2更改为8.0(如果PHP服务器是*nix)/etc/freetds.conf
- 避免
查询选择*
如果您在该页面上搜索
ntext
,将获得更多信息。以下是您可能需要了解的一些事项:
mssql.charset = "UTF-8"
就我而言,我需要安装:
sudo apt-get install php-sybase
并修改/etc/freetds.conf文件:
...
[global]
# TDS protocol version
; tds version = 4.2
tds version = 8.0
client charset = UTF-8
...
第二种方法很适合我,但它太神奇了,我无法理解。“将/etc/freetds.conf中的版本从4.2更改为8.0(如果PHP服务器是*nix)”8.0技巧很奇怪……对我来说也很有用。谢谢请注意,我的freetds conf文件实际上位于/etc/freetds/freetds.conf中,根据freetds docs v 8是SQL Server 2000的7.1的别名,非常旧。可能您应该使用7.4,然后根据需要修复查询。你救了我,因为我没有访问PHP应用程序的权限。谢谢!你确实帮了我很多。我正在使用python,但遇到了同样的问题——这个解决方案在这方面也非常有效。谢谢
...
[global]
# TDS protocol version
; tds version = 4.2
tds version = 8.0
client charset = UTF-8
...