【问题标题】:Postgres does not accept select query built through phpPostgres 不接受通过 php 构建的选择查询
【发布时间】:2015-11-25 13:27:04
【问题描述】:

我有一个 JS 文件,多亏了 ajax,我可以在我的 POSTGRESQL DB 上执行查询。

感谢 ajax 和 php,我已经执行了其他查询,但这是我第一次使用 POSTGRESQL。

php代码:

function deletepic($idpic,$nomefoto){
    global $link;
    $query1 = pg_query($link,"SELECT FROM foto WHERE idf=$idpic AND nome='$nomefoto';");

    if(!$query1){
        return;
    } else {
        unlink("img/photo/" . $nomefoto);
        unlink("img/preview_photo/" . $nomefoto);
        $query = pg_query($link,"DELETE FROM foto WHERE idf=$idpic;");
        if (!$query) {                                  //SE LA QUERY NON E ANDATA A BUON FINE
            $return = 'Errore durante eliminazione';
        } else {
            $return = 'Immagine eliminata';
        }
    }
    echo $return;
}

如果我评论第一个 ($query1) 查询,则执行另一个查询,但我也需要执行第一个查询。我已经检查过"$nomefoto" 和数据库之间是否存在对应关系。如您所见,我将'' 放在$nomefoto 周围,但这只是我最后的努力。我已经尝试过不带引号、带双引号和以这种方式传递该字符串: "'".$nomefoto."'".

似乎没有任何效果。

在 DB 上,"nome" 被保存,没有任何引用。 我已经直接从http://localhost/phppgadmin/ 使用该格式执行了查询:

SELECT * FROM foto WHERE idf=92 AND nome='4516Tulips.jpg';

在名称两边加上单引号 (')。它奏效了!

感谢您的帮助。

【问题讨论】:

    标签: php postgresql select quotes


    【解决方案1】:

    select 命令后面必须跟一个值列表,该值列表在您的查询中不存在:

    select 1 
    from foto 
    where idf=$idpic and nome='$nomefoto'
    

    顺便说一句,不需要两个查询:

    delete from foto
    where idf=$idpic and nome='$nomefoto'
    returning *
    

    如果有则返回已删除的行,否则返回空结果集。

    【讨论】:

      猜你喜欢
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多