所以我正在尝试运行一个将一些值插入到postgres数据库中的查询,但是我遇到了一些问题。对于我开始运行时的初学者:
INSERT INTO DataBin (createdUserId, objectId, objData)
VALUES
('52dcd7c7-d300-4394-9f76-e756237951ce', 'd44279a8-3613-4a3c-9a2a-d74770f58a6e', hstore(ARRAY['f9868417-6e91-4c1b-ab67-bcc9290de085', NOW()::TEXT, '7d1d3e16-8b39-4e80-a068-8ed533377dca', 52.03::TEXT, '2123d903-0030-4cb2-abad-d3a48328be97', 20::TEXT]))
;
查询似乎完全正常,但在尝试执行以下操作时,它会给我一个错误:
Notice: Array to string conversion
$db = new PDO("pgsql:host=localhost;port=5432;dbname=test;user=postgres;password=postgres");
//-- Long ass insert for a databin
$stmt = $db->prepare('INSERT INTO DataBin (createdUserId, objectId, objData) VALUES (?, ?, ?)');
$date = new DateTime();
$hstore = array($time["id"], $date->getTimestamp(), $weight["id"],'52.03', $height["id"],'20');
$stmt->bindParam(1, $user["id"]);
$stmt->bindParam(2, $object["id"]);
$stmt->bindParam(3, $hstore);
$stmt->execute();
我假设我没有正确解析数组以使postgres HSTORE正常工作。任何帮助将不胜感激。
答案 0 :(得分:1)
hstore不是PostgreSQL的标准部分,所以我希望将关联数组转换为hstore文本表示需要辅助模块。 hstore不是一个复杂的格式。基本上
"key1" => "value1", "key2" => "value2" ....
您将不得不遍历数组并生成一个hstore字符串。