尝试使它工作5个小时后,我决定寻求帮助。我的问题是PHP将不同的字符串转换为HEX与MSSQL。
字符串
€Quct
php
bin2hex($ data(//C491C5BEC487C48DC5A1C491C491
MSSQL
cast('魏切克'作为varbinary(//f09ee6e89af0f0
PHP结果需要为MSSQL。我该如何解决解决问题?
编辑1
几乎使它正常工作,但仍然有2个char是错误的
$unpacked = unpack('H*hex', mb_convert_encoding($data,'ISO-8859-2')); // F0BEE6E8B9F0F0
尝试完成10个小时后,终于做到了!如果有人有类似的问题,请发布解决方案。
public function FixCroatianChars($data)
{
$unpacked = unpack('H*hex', mb_convert_encoding($data, 'HTML-ENTITIES'));
return 'CAST(0x' . $unpacked['hex'] . ' as char(' . strlen($unpacked['hex']) / 2 . '))';
}
如果您需要将MSSQL铸造为Varbinary,我建议您这样做。
这是PDO示例:
$conn = new PDO("sqlsrv:Server=$myServer;Database=$myDB", $myUser, $myPass);
$stmt = $conn->prepare('SELECT CAST(? as varbinary)');
$stmt->execute(array($lastname));
$result = $stmt->fetchAll();
foreach ($result as $row)
{
// Note your result set will return example one row with one column in it
}
即使您不使用PDO,这也应该给您一个一般的想法。