完整性约束违规:1052 where子句中的列'id'不明确

时间:2013-10-09 13:57:55

标签: php mysql pdo

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

以下是代码:

  1. 连接是:

    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();
    }
    
  2. 然后我创建一个像这样工作的查询:

    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))
    
    {
    
  3. 然后我在另一个页面中创建了另一个查询,这个查询不起作用:

    $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]:完整性约束违规:1052 where子句中的列'id'不明确

1 个答案:

答案 0 :(得分:29)

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