我正在尝试从PHP连接Microsoft Azure SQL Server。 目前在Ubuntu 14.04上的PHP 5.5.9
在将服务器升级到16.04和PHP 7之前,一切正常。 由于具有'N'字符的unicode字符串之前的更新停止工作。当我从准备好的语句中删除'N'时它开始正常运行而不是一件事:当我插入或更新俄语符号时,它们被存储为chineese。
明天我尝试了很多不同的事情试图解决这个问题。最后我决定回滚到Ubuntu 14.04。 但令我惊讶的是,我得到了同样的效果。
这是我的连接字符串:
$connection = new PDO ("dblib:version=7.0;charset=UTF-8;host=".AZURE_SQL_HOST.":".AZURE_SQL_PORT.";dbname=".AZURE_SQL_DB, AZURE_SQL_USER, AZURE_SQL_PASS);
我不知道应该提供什么信息。有人可以指导我吗?
提前致谢!
更新 我不知道究竟发生了什么,但不知怎的,我开始收到问号。看起来像chineese char问题只有php7。
现在我无法摆脱这个问号。
答案 0 :(得分:1)
最后整理出所有内容:
没关系:
$statement = $pdo->prepare("SELECT * FROM some_table WHERE some_field=?");
$statement->execute(['SOME_UNICODE_CHARS']);
这不是:
$statement = $pdo->prepare("SELECT * FROM some_table WHERE some_field=:field");
$statement->execute([':field' => 'SOME_UNICODE_CHARS']);
希望这可以节省一些时间......