-2
$id=$_GET["id"];
$query= "
SELECT
blomster_produkter.blomster_produkt_id,
blomster_produkter.blomster_produkt_navn,
blomster_produkter.blomster_produkt_pris
FROM
blomster_produkter
INNER JOIN blomster_produkter ON 
blomster_produkter.FK_blomster_produkt_id=blomster_produkter.blomster_produkt_navn     
blomster_produkter.FK_blomster_produkt_id=blomster_produkter.blomster_produkt_pris
blomster_produkter.FK_blomster_produkt_id=blomster_produkter.blomster_produkt_id
WHERE FK_blomster_kategori_id=$id";

なぜこれがmysqlエラー1066をスローするのですか?

(私がいくつかの重要なものを見逃している場合も申し訳ありませんが、これは私がstackoverflowで尋ねている最初の質問です)

4

2 に答える 2

8

0.1秒のグーグル:「mysqlエラー1066」-一意のテーブル名/エイリアスではありません

    FROM
    blomster_produkter   <--table #1
    INNER JOIN blomster_produkter ON   <-table #2

エイリアスを使用せずに、テーブルをそれ自体に結合したり、結合で同じテーブル名を再利用したりすることはできません。

FROM blomster_produkter
INNER JOIN blomster_produkter AS someothername ON
                             ^^^^^^^^^^^^^^^^^--- the alias

次に、結合条件で必要に応じてテーブル参照を変更します。

同様に、SQL インジェクション攻撃に対して無防備であることに注意してください。サーバー pwn3d をお楽しみください。

于 2012-12-04T20:29:18.253 に答える
0

エラー 1066 は「テーブル/エイリアスが一意ではありません」

これは、エイリアスを作成せずにテーブルをそれ自体と結合しているためです。次のようなエイリアスを行う必要があります。

SELECT
    bp1.blomster_produkt_id,
    bp1.blomster_produkt_navn,
    bp1.blomster_produkt_pris
    FROM
    blomster_produkter bp1
    INNER JOIN blomster_produkter bp2 ON
    bp1.FK_blomster_produkt_id=bp2.blomster_produkt_navn [...]
于 2012-12-04T20:31:26.713 に答える