Avatar billede anetteogjesper Nybegynder
26. juni 2004 - 23:56 Der er 11 kommentarer og
1 løsning

Column: "id" in where clause is ambiguous

Hvad er der galt når der står dette: Column: 'id' in where clause is ambiguous

koden er denne:
<?php

if (!empty($_POST['sel_item_id'])) {
        //connect to database
        require("mysql.php");
        $conn = mysql_connect($server, $brugernavn, $adgangskode)
                  or die(mysql_error());
        mysql_select_db($database,$conn)
                  or die(mysql_error());

        //valider varer samt hent navn og pris
        $get_iteminfo = "SELECT name FROM inventory WHERE id ='".$_POST['sel_item_id']."'";
        $get_iteminfo_res = mysql_query($get_iteminfo)
                  or die(mysql_error());
       
        if (mysql_num_rows($get_iteminfo_res) < 1) {
                  //ikke gyldig id, drop det
                  header ("Location: indhold.php");
                  exit;
        } else {
                  //hent info
                  $name = mysql_result($get_iteminfo_res,0,'name');

                  if(!empty($_COOKIE['xxxxx.dk'])) {
                          //føj info til cart-tabellen
                          $addtocart = "INSERT INTO store_shoppertrack (sel_item_id, sel_item_qty, sel_item_size, sel_item_price, date_added, id) VALUES ('".$_POST['sel_item_id']."', '".$_POST['sel_item_qty']."', '".$_POST['sel_item_size']."', '".$_POST['sel_item_price']."', now(), '".$_COOKIE['xxxxx.dk']."')";
                         
                          mysql_query($addtocart);

                  } else {
                          //føj info til cart-tabellen
                          $addtocart = "INSERT INTO store_shoppertrack (sel_item_id, sel_item_qty, sel_item_size, sel_item_price, date_added) VALUES ('".$_POST['sel_item_id']."', '".$_POST['sel_item_qty']."', '".$_POST['sel_item_size']."', '".$_POST['sel_item_price']."', now())"; $find_id = "SELECT id FROM store_shoppertrack WHERE sel_item_id='".$_POST['sel_item_id']."' AND sel_item_qty='".$_POST['sel_item_qty']."' AND sel_item_size='".$_POST['sel_item_size']."' AND sel_item_price='".$_POST['sel_item_price']."'";
                         
                          mysql_query($addtocart);
                          $find_id = mysql_fetch_array(mysql_query($find_id));
                         
                          setcookie("xxxxx.dk", $find_id['id']);
                  }
                  //vidersend til showcart_side
?>
<html>
        <head>
                  <title>This page has moved... Denne side er flyttet!</title>
                  <meta http-equiv="Refresh" content="0;URL=showcart.php"/>
        </head>
        <body>
        </body>
</html>
<?php
        exit;
        }

} else {
        //send brugeren et andet sted hen
        header("Location: indhold.php");
        exit;
}
?>
Avatar billede dennismp Nybegynder
27. juni 2004 - 00:00 #1
Jeg kan ikke se hvor det kulle ske hende, men det betyder at mysql ikke ved hvilken "id" den skal vælge (hvis du fx select'er fra to tabeller samtidigt og begge indeholder id).. Du kan løse det med at skrive tabelnavn.id
Avatar billede anetteogjesper Nybegynder
27. juni 2004 - 00:06 #2
okay dvs. at hvis min tabel eks. mysql tabel hedder xxx skal jeg skrive xxx.id?
Er det et bestemt sted jeg skal ændre id?
Avatar billede dennismp Nybegynder
27. juni 2004 - 00:10 #3
Du skal kun skrive xxx.id hvis du select'er (i samme statement) fra flere tabeller der har en kolonne der hedder id.

Jeg kan ikke se hvor du skal rette.. Har du ikke et linjenummer?
Avatar billede anetteogjesper Nybegynder
27. juni 2004 - 00:13 #4
Nej den siger bare: Column: "id" in where clause is ambiguous
Avatar billede dennismp Nybegynder
27. juni 2004 - 00:19 #5
Du kan prøve at lave en søg&erstat, hvor du søger efter:
die(mysql_error());
og erstatter med
die("<b>SQL-error in ".__FILE__.':'.__LINE__.'</b> '. mysql_error());

så skulle den gerne give dig lidt mere information.
Avatar billede anetteogjesper Nybegynder
27. juni 2004 - 13:13 #6
Selvom jeg sætter det du skrev ind, skriver den stadig: Column: 'id' in where clause is ambiguous
Avatar billede dennismp Nybegynder
27. juni 2004 - 13:16 #7
Er du sikker på at problemet ikke er i en anden fil - som du kalder?
Avatar billede anetteogjesper Nybegynder
27. juni 2004 - 13:26 #8
Det kan da godt være, men jeg kalder kun denne, der hedder addtocart
Avatar billede dennismp Nybegynder
27. juni 2004 - 13:31 #9
Jeg tror det.. Prøv at se filen igennem. Se efter mysql_query() .. hvor du laver en select fra to eller flere tabeller. Lav evt den die-erstat der hvor du finder en sådan select - så du kan være sikker på at du kigger efter fejlen det rigtige sted.
Avatar billede anetteogjesper Nybegynder
27. juni 2004 - 13:35 #10
Filen før addtocart er denne:

<?php
//connect to database
require("mysql.php");
$conn = mysql_connect($server, $brugernavn, $adgangskode)
    or die(mysql_error());
mysql_select_db($database,$conn)
    or die(mysql_error());

$display_block = "<h1>Detaljer om varen</h1>";

//validering af varen
$get_items = "SELECT c.name, si.name, si.price, si.description, si.picture FROM inventory AS si left join category AS c ON c.id = si.category WHERE si.id = '".$_GET['item_id']."'";

$get_items_res = mysql_query($get_items)
    or die (mysql_error());

if (mysql_num_rows($get_items_res) <1) {
    //varen ikke valid
    $display_block .= "<p><em>Invalid vare valg</em></p>";
} else {
    //varen ok, hent oplysninger
    $name = strtoupper(stripslashes(mysql_result($get_items_res,0,'name')));
    $price = mysql_result($get_items_res,0,'price');
    $description = stripslashes(mysql_result($get_items_res,0,'description'));
    $picture = mysql_result($get_items_res,0,'picture');

    //Lav et "brødkrummespor"
    $display_block .= "<p><strong><em>Du ser på:</em><br/>";
    $display_block .= $name."</strong></p>";
    $display_block .= "<table cellpadding=3 cellspacing=3>";
    $display_block .= "<tr><td valign=middle align=center><img src=\"".$picture."\"></td><td valign=middle><P><strong>Beskrivelse:</strong><br>".$description."</p><p><strong>Pris:</strong> kr. ".$price."</p><form method=post action=\"addtocart.php\">";
   
    //hent størrelser
    $get_sizes = "SELECT item_size FROM store_item_size where item_id='".$_GET['item_id']."' ORDER BY item_size";
    $get_sizes_res = mysql_query($get_sizes)
        or die(mysql_error());
   
    if (mysql_num_rows($get_sizes_res) > 0) {
        $display_block .= "<p><strong>Findes i størrelserne og farverne: </strong><select name=\"sel_item_size\" onchange=\"java script:document.Size.submit();\">";
       
        while ($sizes = mysql_fetch_array($get_sizes_res)) {
            $item_size = $sizes['item_size'];
            $display_block .= "<option value=\"".$item_size."\">".$item_size."</option>";
        }
    $display_block .= "</select>";
    }


    //hent antal
    $get_qty = "SELECT store_item_qty FROM store_item_size where item_id = ".$_GET['item_id']." ORDER BY store_item_qty";
    $get_qty_res = mysql_query($get_qty)
        or die(mysql_error());

    if (mysql_num_rows($get_qty_res) > 0) {
        $display_block .= "<P><strong>Antal: </strong><select name=\"sel_item_qty\" onchange=\"java script:document.Size.submit();\">";

        while ($qty = mysql_fetch_array($get_qty_res))    {
            $store_item_qty = $qty['store_item_qty'];
            $display_block .= "<option value=\"".$store_item_qty."\">".$store_item_qty."</option>";
       
            for ($i=1; $i<$qty['store_item_qty']; $i++) {
                    $display_block .= "<option value=\"".$i."\">".$i."</option>";

            }
        }
        $display_block .= "</select>";   

    }

    $display_block .= "</select><input type=\"hidden\" name=\"sel_item_id\" value=\"".$_GET['item_id']."\"><P><input type=\"submit\" name=\"submit\" value=\"Tilføj til indkøbsvognen\"></p></form></td></tr></table>";
}
mysql_close($conn);
?>
<html>
    <head>
        <title></title>
        <link rel="stylesheet" type="text/css" href="rullepanel.css">
        <style>
            a {text-decoration: none}
        </style>
    </head>
    <body>
        <? print $display_block; ?>
    </body>
</html>
Avatar billede dennismp Nybegynder
27. juni 2004 - 13:39 #11
Ser også fin ud..Eneste forslag jeg har, er at alve den søg/erstat ting på die - så du fremover får besked om hvor sql-fejlen opstår..
Avatar billede anetteogjesper Nybegynder
23. juni 2005 - 11:56 #12
Færdig - fandt hjælp andet sted
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester