我在将 PHP PDO 接口与 Microsoft SQL Server 一起使用时遇到问题。问题在于将 PHP 数值转换为在 MS SQL Server 的函数中使用。我使用以下语句删除某些记录:
$sql = "DELETE FROM table WHERE SUBSTRING(attribute, 1, ?) = ?";
我用代码准备并执行这个语句(有点缩小):
$query = $pdo->prepare ($sql);
$query->execute (array (strlen ('Text'), 'Text'));
但是查询总是失败。错误是:
SQLSTATE[42000]:[Microsoft][SQL Server Native Client 11.0][SQL Server]参数数据类型 nvarchar 对子字符串函数的参数 3 无效。
我假设来自 strlen 的数字没有被解析成数字,但我不知道如何解决这个问题(除了手动添加到查询中)。
我找到了这些链接,但不是很有帮助。
http://drupal.org/node/1169202
Drupal 上的人也有同样的错误,但他们通过强制转换重新创建函数来修复它。有没有其他方法可以解决这个问题?
谢谢。