2013-10-09 7 views
9

Ich mache eine einfache Abfrage, aber es funktioniert nicht und ich weiß nicht warum. Ich habe mich kürzlich mit PDO-Verbindungen zu Datenbanken vertraut gemacht. HierVerletzung Integritätsbedingung: 1052 Spalte 'ID' in Where-Klausel ist mehrdeutig

ist der Code:

  1. Die Verbindungen ist:

    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. dann erstelle ich aa Abfrage, die wie folgt funktioniert:

    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)) 
    
    { 
    

aber dann Ich erstelle eine andere Abfrage in einem anderen Seite wie diese, die nicht funktioniert:

$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); 

und ich versuchte:

$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)) 

aber dann dieser Fehler angezeigt:

SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1052 Column 'ID' in where-Klausel ist mehrdeutig

+3

Das ist, weil Sie mehrere mögliche ID-Felder haben, eins für N und eins für J, versuchen Sie N.id oder J.id in Ihrer WHERE-Klausel. – joe42

Antwort

23

Am Ende der Abfrage id=numero. ID benötigt Tabellenalias. Es sollte N.id oder J.id sein

Verwandte Themen