使用预准备语句在SQLSERVER中搜索Unicode数据

时间:2016-04-27 12:24:11

标签: php sql-server pdo dblink

我有一个包含firstName类型的列NVARCHAR的表格。我正在编写一个查询来按部分名字搜索。我的查询如下:

$params[':firstName'] = "%วุฒิหิรัญทิ%";
$query = "SELECT * FROM users WHERE firstName LIKE :firstName";
$matches = $this-db->fetchAll($query, $params);

这不起作用,我读过在MSSQL中我需要使用N来搜索Unicode字符。如何在准备好的声明中完成此操作?我尝试将:firstName替换为N:firstName,但它无效。

编辑:此解决方案适用于拉丁语1字符集中的字符。它不适用于该集之外的字符。对于特殊字符,我可以直接运行查询,例如SELECT * FROM users WHERE firstName LIKE N'%วุฒิหิรัญท%',它可以正常工作,但我无法使用预处理语句。

1 个答案:

答案 0 :(得分:-1)

您没有正确使用SQL通配符;

SELECT * FROM users WHERE firstName LIKE '%' + :firstName + '%'

%符号是SQL的通配符运算符,上面的代码应该适合你。

相关问题