Я пытаюсь выполнить запрос в PHP для подключения и извлечения данных из базы данных MSSQL EXPRESS (2008 R2). Но я получаю сообщение об ошибке, когда я извлекаю данные из базы данных из ntext.
Ошибка;
Данные Юникода в данных сравнения или только в Юникоде не могут быть отправлены клиентам с использованием DB-библиотеки (например, ISQL) или ODBC версии 3.7 или более ранней. (серьезность 16) в
и мой скрипт
$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);
любая помощь по этому поводу оценивается ….
Благодаря ….
Пара параметров из комментариев на странице руководства mssql_query()
SELECT CAST(field1 AS TEXT) AS field1 FROM table
/etc/freetds.conf
от 4.2 до 8.0 (если PHP-сервер – это * nix) SELECT *
Еще много, если вы ntext
на этой странице.
Вот некоторые вещи, которые вам могут понадобиться:
Установите поддержку mssql для Debian (Lenny / Squeeze):
apt-get install php5-sybase
Когда вы получили это сообщение об ошибке: «Данные Unicode в данных сортировки или данных nicode не могут быть отправлены клиентам с использованием DB-библиотеки (например, ISQL) или ODBC версии 3.7 или более ранней версии».
В /etc/freetds/freetds.conf добавьте эти две строки (последние две):
[global] ;tds version = 4.2 tds version = 8.0 client charset = UTF-8
Вы также можете редактировать «charset» в php.ini (но вам не нужно, если вы делали это ранее на freetds.conf):; Укажите клиентский набор символов ..; Если пуст или не установлен клиентская кодировка с freetds.comf; Это используется только при компиляции с помощью FreeTDS
mssql.charset = "UTF-8"
Используйте типы столбцов nchar / nvarchar / ntext, если вам нужна поддержка Unicode.
В моем случае мне нужно было установить:
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 ...