插入阿拉伯文本与ODBC PHP驱动程序中的MSSQL中



在我们的应用程序中,我们使用MS SQL数据库,并在sqladmin.winhost.com上托管。我们与Windows Server一起安装了与ODBC驱动程序的PHP安装。该数据库使用的是" Arabic_ci_ai "。

以下是将数据简单插入表的代码。查询已完全执行成功,但丢失了阿拉伯数据,并设置了一些随机字符串是表。

当$ request ['username']的值是" dtabase"中的"احsthe"。

<?php 
$connectionString = 'DRIVER={SQL Server};SERVER=' . SERVER_NAME . ';DATABASE=' . DB_NAME;
$conn = odbc_connect($connectionString, USER_NAME, PASSWORD);
  $request=$_POST;      
echo $sql="INSERT INTO MobileNotificaiton.emp_user VALUES('test@gmail.com','MXI',200,'{$request['username']}','123','12365897452',1,'','','','')";        
        $results = odbc_exec($conn, $sql);
    $close = odbc_close($conn);
    ?>

任何一个guid me?

预先感谢。

经过一些研究,我找到了解决方案。我将阿拉伯文本转换为PHP中的二进制文件,然后在使用MSSQL的cast函数插入数据时将此二进制数据转换为所需的数据类型。

$connectionString = 'DRIVER={SQL Server};SERVER=' . SERVER_NAME . ';DATABASE=' . DB_NAME;
$conn = odbc_connect($connectionString, USER_NAME, PASSWORD);
$request=$_POST;      
$data = iconv("UTF-8", "UCS-2LE", $request['username']);
$unpacked = unpack('H*hex', $data);
$username='0x' . strtoupper($unpacked['hex']);
$sql="INSERT INTO MobileNotificaiton.emp_user VALUES('test@gmail.com','MXI',200,'{$username}','123','12365897452',1,'','','','')";        
$results = odbc_exec($conn, $sql);
$close = odbc_close($conn);

从数据库中获取数据时,我们以相反的顺序使用相同的过程。这样,数据在.NET应用程序和PHP应用中兼容。这就是我的要求。

相关内容

最新更新