Подтвердить что ты не робот

Проблема с запросом MSSQL в PHP и запрос текстовых данных

Я пытаюсь выполнить запрос в PHP для подключения и извлечения данных из базы данных MSSQL EXPRESS (2008 R2). Но я получаю сообщение об ошибке, когда я извлекаю данные из базы данных из ntext.

Ошибка:

Данные Unicode в данных сравнения или только в Unicode не могут быть отправлены клиентам с использованием DB-библиотеки (например, ISQL) или ODBC версии 3.7 или более ранней. (серьезность 16) в

а мой script -

    $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); 

любая помощь по этому поводу оценивается....

Спасибо....

4b9b3361

Ответ 1

Пара параметров из комментариев на странице mssql_query()

  • SELECT CAST(field1 AS TEXT) AS field1 FROM table
  • Chang версия в /etc/freetds.conf от 4.2 до 8.0 (если сервер PHP - это * nix)
  • Избегайте SELECT * запросов

Больше, если вы выполните поиск ntext на этой странице.

Ответ 2

Вот некоторые вещи, которые вам могут понадобиться:

  • Установите поддержку mssql для Debian (Lenny/Squeeze):

    apt-get install php5-sybase

  • Когда вы получили это сообщение об ошибке: "Данные Unicode в данных сортировки или данных nicode не могут быть отправлены клиентам, использующим DB-Library (например, 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, если вам нужна поддержка юникода.

Ответ 3

В моем случае мне нужно было установить:

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
...