2016-03-25 82 views
1

我試圖在PHP中使用N1QL命名參數......這第一個工作: 1)Couchbase N1QL的select語句與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 Notice:Undefined variable:type ...'錯誤

任何人都可以幫助指導我在PHP中爲N1QL使用命名參數的正確語法?

我的couchbase服務器是4.1

回答

0

它看起來像你在正確的軌道上。問題在於,您在一個PHP字符串中使用$type,這導致PHP處理器嘗試用名爲type的變量替換它。您應該將您的N1QL字符串換成單引號而不是雙引號,以避免讓PHP解釋器嘗試執行此類字符串處理。

另外Couchbase PHP SDK用於設置命名PARAMS提供API:

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

這是爲了提供命名參數優選方式。