I'm trying a query in PHP to connect and extract data from a MSSQL EXPRESS (2008 R2) database. But i'm getting an error when i'm pulling ntext based data from the DB.
Error is;
Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (severity 16) in
and my script is
$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);
any help on this is appreciated ....
Thanks ....
Couple of options from the comments on the mssql_query()
manual page
SELECT CAST(field1 AS TEXT) AS field1 FROM table
/etc/freetds.conf
from 4.2 to 8.0 (if the PHP server is *nix) SELECT *
queries Plenty more if you search ntext
on that page.
Here are some things you might need to know:
Install mssql support for Debian (Lenny/Squeeze):
apt-get install php5-sybase
When you got this error message: "Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier."
In /etc/freetds/freetds.conf add these two lines (last two):
[global] ;tds version = 4.2 tds version = 8.0 client charset = UTF-8
You can edit "charset" in php.ini too (but you don't need if you did it previously in 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"
Use nchar/nvarchar/ntext column types if you need unicode support.
In my case, I needed to install:
sudo apt-get install php-sybase
And modify the /etc/freetds.conf file:
...
[global]
# TDS protocol version
; tds version = 4.2
tds version = 8.0
client charset = UTF-8
...
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.