2016-03-25 2 views
1

Я пытался использовать N1QL в PHP ... это первый один работает: 1)Couchbase N1QL с именованными параметрами в PHP

$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 Примечание: Undefined переменной: тип ... error

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

мой couchbase сервер 4,1

ответ

0

Похоже, что вы находитесь на правильном пути. Проблема в том, что вы используете $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"]); 

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

Смежные вопросы