Я пытался использовать N1QL в PHP … первый работает:
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: неопределенная переменная: тип …»
Может кто-нибудь помочь мне указать правильный синтаксис для использования именованных параметров для N1QL в PHP?
мой сервер couchbase — 4.1
Похоже, вы на правильном пути. Проблема в том, что вы используете $type
в строке PHP, которая заставляет процессор 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"]);
Это предпочтительный способ предоставления именованных параметров.
Других решений пока нет …