Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mssql查询UTF-8到数据库字符集(UCS-2)_Php_Sql Server_Utf 8_Ucs2 - Fatal编程技术网

php mssql查询UTF-8到数据库字符集(UCS-2)

php mssql查询UTF-8到数据库字符集(UCS-2),php,sql-server,utf-8,ucs2,Php,Sql Server,Utf 8,Ucs2,我有一个变量$tekst,它是一个字符串。我想将该变量保存到mssql数据库中。我使用图书馆。这一切都很好,直到我有了一个带有特殊字符的字符串,比如ëäá,然后它会像这样保存它 这是我使用的代码: $tekst = htmlspecialchars($_POST['tekst']); $mssql = new Mssql(); $mssql->connect(); $mssql->query("UPDATE siteteksten

我有一个变量
$tekst
,它是一个字符串。我想将该变量保存到mssql数据库中。我使用图书馆。这一切都很好,直到我有了一个带有特殊字符的字符串,比如
ëäá
,然后它会像这样保存它

这是我使用的代码:

  $tekst = htmlspecialchars($_POST['tekst']);
  $mssql = new Mssql();
  $mssql->connect();
    $mssql->query("UPDATE siteteksten
                   SET Siteteksten_Nl='$tekst'
                   WHERE Sitetekst_Id=$id");
    header('Location:'.$_SERVER['HTTP_REFERER']);exit();
sitetesten\u Nl
的数据类型为
nvarchar
我发现nvarchar有
UCS-2
字符集,所以我添加了

$tekst = mb_convert_encoding( $tekst, 'UCS-2', mb_detect_encoding($tekst, mb_detect_order(), true) );
但是现在,即使没有像
ëéäá
这样的特殊字符,查询也不会执行。它返回以下错误消息:

Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 105 [code] => 105 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Unclosed quotation mark after the character string ''. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Unclosed quotation mark after the character string ''. ) [1] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near ''. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near ''. ) )
有人能看到我在这里遗漏了什么吗

这是Mssql类

  class Mssql {
    private $username = 'username';
    private $password = 'password';
    private $db = 'database';
    private $server = 'server';

    private $conn;

    public function connect() {
    ini_set('mssql.charset', 'UTF-8');
        $this->conn = mssql_connect($this->server, $this->username, $this->password);

        mssql_select_db($this->db);
            if (!$this->conn) {
                die("Connection could not be established.<br> Linux <br>");
            }
    }

    public function query($sql, $return_message=true) {
        $query = mssql_query($sql, $this->conn);
        // Did the query fail?
        if (!$query && $return_message=true) {
        return  mssql_get_last_message();
        }
        // Fetch the row
        if (!mssql_num_rows($query)) {
            return 'No records found';
        } else {
            $rows = [];
            while ($row = mssql_fetch_array($query, MSSQL_BOTH)) {
                array_push($rows, $this->encode_items($row) );
            }
            return $rows;
        }
    }

    public function num_rows($sql) {
          $query = mssql_query($sql);
          // Did the query fail?
          if (!$query) {
              die('MSSQL error: ' . mssql_get_last_message());
          }
          return mssql_num_rows($query);
    }

      public function encode_items($array) {

        foreach($array as $key => $value) {
            if(is_array($value)) {
                 $array[$key] = encode_items($value);
             }
             else {
                 $array[$key] = mb_convert_encoding($value, "UTF-8", "ASCII");
              }
          }

         return $array;
      }

  }
$tekst = utf8_decode($tekst);
$mssql->query("UPDATE siteteksten SET $taal=N'$tekst' WHERE Sitetekst_Id=$id");