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

时间:2015-11-25 13:27:04

标签: php postgresql select quotes

我有一个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."'"

似乎没有任何效果。

在数据库中保存"nome"时没有任何报价。 我已使用以下格式直接从http://localhost/phppgadmin/执行查询:

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

名称周围有单引号(')。它有效!

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

select命令后面必须跟不在查询中的值列表:

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

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

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

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