代码之家  ›  专栏  ›  技术社区  ›  Devin Dixon

PHP pg_query未执行[closed]

  •  1
  • Devin Dixon  · 技术社区  · 13 年前

    我在PostgreSQL中遇到了这个问题,我正在解析网页元标签,然后将请求输入到pg_query中。在本例中,为了简洁起见,数据没有经过净化。

    所以这样的事情:

    foreach ($metas as $meta) {
        $property = $meta->getAttribute('property');
        $content = $meta->getAttribute('content');
    
    $query = "UPDATE " . $tablename . " SET article_meta = article_meta || '$property=>$content'::hstore where article_id = '{$this -> article_id}' ;";
    
    pg_query($conn, $query);
    
    }
    

    问题是,查询不会执行,也不会失败或抛出任何错误。但是,如果我复制执行的查询并通过类似pgadmin的程序运行它,它就可以工作了。因此,该查询不是无效的。你知道为什么会这样吗?

    我应该提到的是,当我添加了一个触发器来更新全文搜索tsvector时,这种行为可能已经开始了,但我不知道这是如何相关的。

    使现代化

    此外,我还想补充一点,我有一个sync函数,它稍后是ru,但只执行元标记的解析,并且查询可以工作。因此,某个地方有东西阻止了查询的执行。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Chris Travers    13 年前

    现在您说数据块正在运行,因为您可以将查询返回到屏幕并运行它。这大大缩小了可能性。

    在我看来,最有可能的情况就是你忘记了提交交易。尝试:

    pg_query('commit'); 
    

    循环之后。这可能会解决你的问题。

    另一种可能性是连接已关闭,但通常IME在这种情况下至少会抛出一个警告。您可能想在同一连接上尝试一些选择查询,以确保它处于打开状态。

    最后,您可能需要尝试使用网络分析器来监视进出数据库的流量(假设您没有使用本地套接字)。这应该能让你更清楚地了解到底发生了什么。