【问题标题】:SELECT CURRVAL (pg_get_serial_sequence Im doing something wrong?SELECT CURRVAL (pg_get_serial_sequence 我做错了什么?
【发布时间】:2013-07-26 16:49:44
【问题描述】:

我做错了什么,我试图从表中获取最后一个record_id,在第一条语句将它插入我的表之后。我似乎只是打印了用于显示最后一个 id 的代码?

      SELECT CURRVAL (pg_get_serial_sequence('sheet_tbl','sheet_id'))";

代码在这里

  else {
        echo 'Record added';
        $sql = "INSERT INTO sheet_tbl (site_id,  eventdate, eventtime, username, additionalvolunteers) VALUES ('$_POST[site_id]','$_POST[eventdate]','$_POST[eventtime]', '$username','$_POST[additionalvolunteers]')";

        echo $sql; //Just so I can see what is getting sent
        $result = pg_query($sql);

        $sheet_id_pull = "SELECT CURRVAL (pg_get_serial_sequence('sheet_tbl','sheet_id'))";
        echo $sheet_id_pull; //This is where im having the issue with the above line.
}

【问题讨论】:

  • 到底是什么问题?
  • 当我使用上面的select curravl时,当我回显变量时它只是打印select currval语句。所以我认为我显然输入了错误
  • 这听起来更像是 PHP(?) 问题而不是 Postgres 问题,因为该语句本身是正确的。

标签: postgresql psql postgresql-9.3


【解决方案1】:

也许

echo pg_query($sheet_id_pull);

代替

echo $sheet_id_pull;

或者

$sheet_id_pull = pg_query("SELECT CURRVAL (pg_get_serial_sequence('sheet_tbl','sheet_id'))");
echo $sheet_id_pull;

另请阅读this 问题。它有更好的方法来获取插入的 id。

【讨论】:

  • 它至少没有打印语句,但是它说 Resource id #40 ?
  • 我查看了昨天的问题,但是我在放置资源 ID 的位置时遇到了问题,因为它认为它是一个列。 $sql = "INSERT INTO sheet_tbl (site_id, eventdate) VALUES ('$_POST[site_id]','$_POST[eventdate]')returning id";
  • @Tom 你需要pg_fetch_row($sheet_id_pull) 之类的东西来访问查询结果。阅读this手册以获取示例。
  • @Tom 如果要返回值,请插入sheet_id 列 - 写入... returning sheet_id
  • 感谢您的帮助。我知道有时这是一个基本问题,但当它是全新的时,这些小问题会有所帮助。干杯
猜你喜欢
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 2021-04-19
  • 2017-03-13
  • 2017-01-18
  • 2013-06-24
相关资源
最近更新 更多