使用PHP的PDO使用HSTORE插入数组

时间:2013-07-26 14:54:26

标签: php postgresql pdo hstore

所以我正在尝试运行一个将一些值插入到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正常工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

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

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