PHPでApache CouchDBにアクセスして、ドキュメントデータを更新です。 アクセスURLの末尾に、データベース名とドキュメントIDを指定し、「'_rev'」データを用意する必要があります。更に、PUTでアクセスするのがミソのようです。
参考サイト
CouchDB for PHP developers - CRUD(Inchooさん)
成功の場合
<?php
$id = '5945d346-f70e-46bb-886f-2dc88465dfe5';
$customer = array(
'firstname' =>'二郎',
'lastname' =>'佐藤',
'username' =>'satojiro',
'email' =>'satojiro@example.com',
'pass' => md5('password')
);
$customer['_rev'] = '2-12860c046ac06d030644c4ecd8f53a10';
$data = json_encode($customer);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://admin:password@127.0.0.1:5984/customers/'.$id);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: application/json',
'Accept: */*'
));
$response = curl_exec($ch);
curl_close($ch);
header('content-type: application/json; charset=utf-8');
echo $response ;
?>
_rev が正しくない場合
{
"ok": true,
"id": "5945d346-f70e-46bb-886f-2dc88465dfe5",
"rev": "3-876acc4794d3dd97c54d400ede5ce1aa"
}
POSTでアクセスした場合
{
"error": "conflict",
"reason": "Document update conflict."
}
{
"error": "bad_request",
"reason": "Referer header required."
}
参考サイト
CouchDB for PHP developers - CRUD(Inchooさん)