Ankündigung

Einklappen
Keine Ankündigung bisher.

Insert mit Sub-Select

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Raito
    hat ein Thema erstellt Insert mit Sub-Select.

    Insert mit Sub-Select

    Ich hab mal eine Frage. Kann ich bei INSERT INTO einen Sub-Select mit benutzen. In der Mysql Doku steht nur

    INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

    Ich habs dann mal so versucht.

    $sql_detail = "INSERT INTO tb_detail (detail_nickname, detail_firstname, detail_lastname, detail_age, detail_city, detail_zip, detail_status, detail_membertype, detail_country, detail_language, detail_background, detail_color, detail_date)
    VALUES ('".$_POST['nickname']."', '".$_POST['firstname']."', '".$_POST['lastname']."', '".$_POST['age']."', '".$_POST['city']."', '".$_POST['zip']."', '2', '4', SELECT country_id FROM tb_country WHERE country_name LIKE '".$_POST['country']."', '', '', '', NOW())";
    Leider funktioniert das nicht. Kann mir jemand einen Tipp geben wie es funktioniert/ funktionieren könnte?
    Schonmal danke im vorraus.

  • lazydog
    antwortet
    Zitat von [url=http://dev.mysql.com/doc/refman/5.1/de/subqueries.html]Syntax von Unterabfragen[/url]
    Eine Unterabfrage muss immer in Klammern stehen
    Ausserdem würdest du es erleichtern, dir zu helfen, wenn du deine Abfrage etwas formatieren würdest. Du wirst ja nicht bestreiten, dass
    PHP-Code:
    $sql_detail "
        INSERT INTO 
            tb_detail (
                detail_nickname, 
                detail_firstname, 
                detail_lastname, 
                detail_age, 
                detail_city, 
                detail_zip, 
                detail_status, 
                detail_membertype, 
                detail_country, 
                detail_language, 
                detail_background, 
                detail_color, 
                detail_date
            )
        VALUES (
            '" 
    $_POST['nickname'] . "',
            '" 
    $_POST['firstname'] . "',
            '" 
    $_POST['lastname'] . "', 
            '" 
    $_POST['age'] . "', 
            '" 
    $_POST['city'] . "', 
            '" 
    $_POST['zip'] . "', 
            '2', 
            '4', 
            (
                SELECT 
                    country_id 
                FROM 
                    tb_country 
                WHERE 
                    country_name = '" 
    $_POST['country'] . "'
            ),
            '', 
            '', 
            '', 
            NOW()
        )"

    lesbarer ist.
    Ich hoffe übrigens, dass du die Benutzereingaben vor dem Insert noch überprüfst und escapest. Aber das hat nichts mit der Frage zu tun.

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Korrekter Post folgt

    Einen Kommentar schreiben:


  • Hu5eL
    antwortet
    Zitat von Raito Beitrag anzeigen
    $sql_detail = "INSERT INTO tb_detail (detail_nickname, detail_firstname, detail_lastname, detail_age, detail_city, detail_zip, detail_status, detail_membertype, detail_country, detail_language, detail_background, detail_color, detail_date)
    VALUES ('".$_POST['nickname']."', '".$_POST['firstname']."', '".$_POST['lastname']."', '".$_POST['age']."', '".$_POST['city']."', '".$_POST['zip']."', '2', '4', 'SELECT country_id FROM tb_country WHERE country_name LIKE '".$_POST['country']."', '', '', '', NOW())";
    geht es dann?

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    also im prinzip mit der insert into table select ... syntax

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    "SELECT ".$_POST['nickname'].",column FROM table"
    geht

    Einen Kommentar schreiben:

Lädt...
X