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

57
8

Я пытался использовать 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: неопределенная переменная: type..."

Может ли кто-нибудь помочь мне указать правильный синтаксис для использования именованных параметров для N1QL в PHP?

мой сервер couchbase равен 4.1

спросил(а) 2016-03-25T03:07:00+03:00 4 года, 4 месяца назад
1
Решение
68

Похоже, ты на правильном пути. Проблема в том, что вы используете $type в строке PHP, что заставляет PHP-процессор пытаться заменить его переменной с именем type. Вы должны обернуть свою строку N1QL в одиночные кавычки, а не в двойные кавычки, чтобы избежать попытки интерпретатора PHP выполнить такую обработку строк.

Также Couchbase PHP SDK предоставляет API для установки имени params:

$query = CouchbaseN1qlQuery::fromString('SELECT airportname FROM 'travel-sample' WHERE city=$city AND type=$airport');
$query->namedParams(['city' => "Los Angeles", 'type' => "airport"]);

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

ответил(а) 2016-03-30T19:04:00+03:00 4 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема