Postgres 不接受通过 php 构建的 select 查询

Postgres does not accept select query built through php

我有一个 JS 文件,多亏了 ajax,它让我可以在我的 POSTGRESQL 数据库上执行查询。

感谢 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."'".

似乎没有任何效果。

在数据库中 "nome" 保存时没有任何引号。 我直接从 http://localhost/phppgadmin/ 执行查询,格式为:

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

名称用单引号 (') 括起来。它奏效了!

感谢您的帮助。

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

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

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

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

它将 return 删除行(如果有)或空结果集。