我试图在PHP中使用N1QL ...第一个正在运行: 1)
$query = CouchbaseN1qlQuery::fromString("select count(*) from mybucket where type = 'user'");
$res = $myBucket->query($query);
输出:
array(1) {
[0]=>
object(stdClass)#3 (1) {
["$1"]=>
int(58)
}
}
2)当我更改为命名参数时,它失败了:
$query = CouchbaseN1qlQuery::fromString("select count(*) from mybucket where type = $type");
$res = $myBucket->query($query, ['type' => 'user']);
我得到'PHP注意:未定义变量:类型...'错误
任何人都可以帮助指导我在PHP中使用N1QL命名参数的正确语法吗?
我的couchbase服务器是4.1
答案 0 :(得分:0)
看起来你走在正确的轨道上。问题是您在PHP字符串中使用$type
,这导致PHP处理器尝试将其替换为名为type
的变量。您应该将N1QL字符串包装在单引号而不是双引号中,以避免PHP解释器尝试执行此类字符串处理。
Couchbase PHP SDK还提供了用于设置命名参数的API:
$query = CouchbaseN1qlQuery::fromString('SELECT airportname FROM `travel-sample` WHERE city=$city AND type=$airport');
$query->namedParams(['city' => "Los Angeles", 'type' => "airport"]);
这是提供命名参数的首选方法。