sqlsrv不支持查询

时间:2017-12-13 16:41:46

标签: sql-server linux php-7

我在Ubuntu 16.04 x64上使用PHP7(使用Droctrine 2.5.13)。 我正在尝试使用命名变量为Microsoft SQL数据库做一个准备好的语句:

$sql = 'SELECT DISTINCT
                "PRODUCT"."NUMBER"
             FROM
                "PRODDB"."PRODUCT"
             WHERE
                "PRODUCT"."NUMBER" LIKE :productNumber
             ORDER BY 
                "PRODUCT"."NUMBER" DESC';

$query  = $this->db->prepare($sql);
$query  ->bindParam(':productNumber' , $ofSearch);
$status = $query->execute();
$result = $query->fetchAll();

但SQL告诉我,我需要使用问题掩码而不是命名参数

错误: sqlsrv不支持查询的命名参数,请使用问号(?)

如果我用问号替换命名变量,它可以正常工作。 以下示例工作正常:

$sql = 'SELECT DISTINCT
                "PRODUCT"."NUMBER"
             FROM
                "PRODDB"."PRODUCT"
             WHERE
                "PRODUCT"."NUMBER" LIKE ?
             ORDER BY 
                "PRODUCT"."NUMBER" DESC';

$query  = $this->db->prepare($sql);
$query  ->bindParam(1 , $ofSearch);
$status = $query->execute();
$result = $query->fetchAll();

使用问号是做准备语句的一种可怕方式,因为当您使用超过20个参数进行非常复杂的查询时,它将成为维护的噩梦。

您是否知道此问题是否有解决方案或至少是解决方法?

0 个答案:

没有答案