1

所以我试图运行一个查询,将一些值插入到我的 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 工作。任何帮助,将不胜感激。

4

1 回答 1

1

hstore 不是 PostgreSQL 的标准部分,所以我希望需要一个辅助模块来将关联数组转换为 hstore 文本表示。hstore 不是一种复杂的格式。基本上

 "key1" => "value1", "key2" => "value2" ....

您将不得不遍历数组并生成一个 hstore 字符串。

于 2013-11-02T12:45:09.603 回答