【问题标题】:PHP postrgres SQL executing a queryPHP postgreSQL 执行查询
【发布时间】:2011-11-25 19:31:58
【问题描述】:

我在 php.ini 中执行查询时遇到问题。我的 php 代码中有以下查询:

    $nome = pg_escape_string($_POST['cnome']);

$obtem_idb = "SELECT idb FROM banda WHERE nome = $nome";

echo("$nome");

$idb = pg_query($connection, $obtem_idb);
if(!$idb){
        die("Error in SQL query: " . pg_last_error());
    } else { 
echo("o idb que vem da query é $idb");
}

我打印的名称是正确的,但是在尝试执行查询时出现以下错误:

Error in SQL query: ERROR: column "anthrax" does not exist LINE 1: SELECT idb FROM banda WHERE nome = Anthrax ^

谁能帮忙,我似乎找不到错误。

当我将变量 $nome 放在单引号中时,它的值更改为“资源 id #2”,我收到以下错误:

Error in SQL query: ERROR: insert or update on table "edicao" violates foreign key constraint "edicao_idb_fkey" DETAIL: Key (idb)=(Resource id #2) is not present in table "banda".

【问题讨论】:

    标签: php sql postgresql


    【解决方案1】:

    您忘记了值的引号:

    $obtem_idb = "SELECT idb FROM banda WHERE nome = '$nome'";
                                                     ^-----^--- must be quoted
    

    【讨论】:

    • 当我将 nome 放在单引号中时,我收到以下错误:资源 id #2SQL 查询中的错误:错误:在表“edicao”上插入或更新违反外键约束“edicao_idb_fkey”详细信息:键( idb)=(Resource id #2) 不存在于表“banda”中。
    • 这是另一个导致该错误的查询。选择查询不能产生外键冲突。
    • 当我执行查询时,来自它的结果应该是“Resource id #2”和“B-7”......
    • 那是因为 query() 调用返回一个结果句柄,而不是您从数据库请求的数据。您仍然必须实际获取一行数据并提取所需的值,然后才能将该值插入另一个查询。
    【解决方案2】:

    你需要在你的 sql 查询中引用 $nome

    $obtem_idb = "SELECT idb FROM banda WHERE nome = '$nome'";
    

    【讨论】:

    • 当我将 nome 放在单引号中时,我收到以下错误:资源 id #2SQL 查询中的错误:错误:在表“edicao”上插入或更新违反外键约束“edicao_idb_fkey”详细信息:键( idb)=(Resource id #2) 不存在于表“banda”中。
    【解决方案3】:

    您需要将您的 $nome 引用放在单引号中:

    $obtem_idb = "SELECT idb FROM banda WHERE nome = '$nome'";
    

    【讨论】:

    • 当我将 nome 放在单引号中时,我收到以下错误:资源 id #2SQL 查询中的错误:错误:在表“edicao”上插入或更新违反了外键约束“edicao_idb_fkey”详细信息:键( idb)=(Resource id #2) 不在表“banda”中。
    猜你喜欢
    • 2022-01-20
    • 2019-10-07
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多