我在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个参数进行非常复杂的查询时,它将成为维护的噩梦。
您是否知道此问题是否有解决方案或至少是解决方法?