Php 完整性约束冲突:1052列';id';where子句中的where子句是不明确的

Php 完整性约束冲突:1052列';id';where子句中的where子句是不明确的,php,mysql,pdo,Php,Mysql,Pdo,我正在做一个简单的查询,但它不起作用,我不知道为什么。我最近开始熟悉到数据库的PDO连接 代码如下: 连接是: define("HOST","localhost"); define("USER","root"); define("PASS","password"); define("BASE","portugalforcedb"); try{ $conexao = 'mysql:host='.HOST.';dbname='.BASE; $connect = new PDO($

我正在做一个简单的查询,但它不起作用,我不知道为什么。我最近开始熟悉到数据库的PDO连接

代码如下:

  • 连接是:

    define("HOST","localhost");
    define("USER","root");
    define("PASS","password");
    define("BASE","portugalforcedb");
    
    
    try{
        $conexao = 'mysql:host='.HOST.';dbname='.BASE;
        $connect = new PDO($conexao, USER, PASS);
        $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }catch(PDOException $erro){
        echo $erro->getMessage();
    }
    
  • 然后我创建一个查询,其工作方式如下:

    try{
        $query = $connect->query("SELECT N.id,N.titulo,N.texto,N.autor,N.data,J.imagem_noticia FROM noticias N JOIN jogo J ON N.jogo_id = J.id WHERE N.publicada =1 ORDER BY N.data DESC LIMIT 4");
    }catch(PDOException $erro){
        echo $erro->getMessage();
    }
    
    while($dados = $query->fetch(PDO::FETCH_ASSOC))
    
    {
    
  • 但是,我在另一个页面中创建了另一个查询,如下所示:

    $id = $_GET['id'];
        try{
        $query = $connect->prepare("SELECT N.id,N.titulo,N.texto,N.autor,N.data,J.imagem_noticia FROM noticias N JOIN jogo J ON N.jogo_id = J.id WHERE N.publicada =1 AND id=numero");
        $query->bindParam('numero',$id,PDO::PARAM_INT);
        $query->execute();
    }catch(PDOException $erro){
        echo $erro->getMessage();
    }
    
    $dados = $query->fetch(PDO::FETCH_ASSOC);
    
    我试着:

    $id = $_GET['id'];
        try{
        $query = $connect->query("SELECT N.id,N.titulo,N.texto,N.autor,N.data,J.imagem_noticia FROM noticias N JOIN jogo J ON N.jogo_id = J.id WHERE N.publicada =1 AND id=numero");
    }catch(PDOException $erro){
        echo $erro->getMessage();
    }
    
    while($dados = $query->fetch(PDO::FETCH_ASSOC))
    
    但随后出现了以下错误:

    SQLSTATE[23000]:完整性约束冲突:where子句中的1052列“id”不明确


    在查询的末尾
    id=numero
    。id需要表别名。它应该是N.id或J.id

    这是因为您有多个可能的id字段,一个用于N,一个用于J,请尝试在WHERE子句中使用N.id或J.id。