Оператор выбора Couchbase N1QL с именованными параметрами в переполнении стека

Я пытался использовать 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

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"]);

Это предпочтительный способ предоставления именованных параметров.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]