Bernd: sql was ist an dem query falsch?

Hallo,

$sql = "insert into $tbl4(idlab,idurl,tme)values(select id from $tbl3 where lab='$q',select id from $tbl1 where b64url='$b','$d');";

Damit versuche ich in eine sqliteDB die id aus 2Tabellen in eine dritte unterzubringen. Aber da ich Syntaxfehler bekomme mache ich wohl was falsch, aber was?

  1. Mahlzeit Bernd,

    $sql = "insert into $tbl4(idlab,idurl,tme)values(select id from $tbl3 where lab='$q',select id from $tbl1 where b64url='$b','$d');";

    Damit versuche ich in eine sqliteDB die id aus 2Tabellen in eine dritte unterzubringen.

    Damit ganz sicherlich nicht. Hast Du überprüft, ob alle PHP-Variablen mit den erwarteten Inhalten gefüllt sind? Wie sieht die fertige Abfrage aus (nur diese ist relevant)?

    Aber da ich Syntaxfehler bekomme

    ... die Du verschweigst und uns damit die Möglichkeit nimmst, Dir zu helfen ...

    mache ich wohl was falsch,

    Vermutlich.

    aber was?

    Bist Du Dir sicher, dass das, was in der SQL-Abfrage in der Klammer steht, vernünftiges und fehlerfreies SQL ist? Was genau willst Du in Deine Tabelle $tbl4 eintragen?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hi,

      $sql = "insert into $tbl4(idlab,idurl,tme)values(select id from $tbl3 where lab='$q',select id from $tbl1 where b64url='$b','$d');";

      Damit versuche ich in eine sqliteDB die id aus 2Tabellen in eine dritte unterzubringen.

      Damit ganz sicherlich nicht. Hast Du überprüft, ob alle PHP-Variablen mit den erwarteten Inhalten gefüllt sind? Wie sieht die fertige Abfrage aus (nur diese ist relevant)?

      Php vars sind OK.
      An der fertigen Abfrage ändert sich nichts, ausser, das die Variabeln natürlich Werte haben, hat somit keinen Einfluss auf meine Frage.

      Aber da ich Syntaxfehler bekomme

      ... die Du verschweigst und uns damit die Möglichkeit nimmst, Dir zu helfen ...

      Ob das hilft?
      Warning: sqlite_query() [function.sqlite-query]: near "select": syntax error in xxxx.php on line 163

      mache ich wohl was falsch,

      Vermutlich.

      aber was?

      Bist Du Dir sicher, dass das, was in der SQL-Abfrage in der Klammer steht, vernünftiges und fehlerfreies SQL ist? Was genau willst Du in Deine Tabelle $tbl4 eintragen?

      zu 1: Bin mir bei den selects nicht sicher
      zu 2: sagte ich bereits, die ids aus 2 anderen tabellen.

      1. Mahlzeit Bernd,

        Aber da ich Syntaxfehler bekomme

        ... die Du verschweigst und uns damit die Möglichkeit nimmst, Dir zu helfen ...

        Ob das hilft?
        Warning: sqlite_query() [function.sqlite-query]: near "select": syntax error in xxxx.php on line 163

        Sicher hilft das. Zumindest sollte es Dir helfen. Hat SQLite eine Konsole oder eine andere Möglichkeit, eine Abfrage direkt eingeben bzw. testen zu können? Vielleicht wird Dir da die Stelle genauer genannt ... wobei eigentlich schon klar ist, wo der Fehler liegt. Zumindest in handelsüblichen SQL-Dialekten.

        Bist Du Dir sicher, dass das, was in der SQL-Abfrage in der Klammer steht, vernünftiges und fehlerfreies SQL ist? Was genau willst Du in Deine Tabelle $tbl4 eintragen?

        zu 1: Bin mir bei den selects nicht sicher
        zu 2: sagte ich bereits, die ids aus 2 anderen tabellen.

        Es wäre mir neu, dass man zwei voneinander getrennte Abfragen aus zwei nicht voneinander abhängigen Tabellen auf die von Dir benutzte Art und Weise einfach mit einem Komma aneinanderhängen kann. Versuche zunächst, die von Dir gewünschten bzw. benötigten Werte in EINER funktionierenden, syntaktisch korrekten Abfrage aus der Datenbank zu holen (sinnvollerweise über eine Konsole o.ä.). Wenn Du eine entsprechende Ergebnismenge hast, kannst Du diese in einem INSERT verwenden.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Es wäre mir neu, dass man zwei voneinander getrennte Abfragen aus zwei nicht voneinander abhängigen Tabellen auf die von Dir benutzte Art und Weise einfach mit einem Komma aneinanderhängen kann. Versuche zunächst, die von Dir gewünschten bzw. benötigten Werte in EINER funktionierenden, syntaktisch korrekten Abfrage aus der Datenbank zu holen (sinnvollerweise über eine Konsole o.ä.). Wenn Du eine entsprechende Ergebnismenge hast, kannst Du diese in einem INSERT verwenden.

          Wäre schön wenn noch jemand eine anfängergerechte Antwort wüsste.

          1. Wäre schön wenn noch jemand eine anfängergerechte Antwort wüsste.

            Wie lautet der Syntaxfehler poste ihn mal?

            1. Wie lautet der Syntaxfehler poste ihn mal?

              Was soll der Mist?

              1. Hallo,

                Wie lautet der Syntaxfehler poste ihn mal?
                Was soll der Mist?

                Du hast richtig erkannt, dass nur ein Trottel PHP-Code und PHP-Fehlermeldungen liefert, wenn er ein SQL-Problem hat.

                Grüße

                Vinzenz

                1. Wie lautet der Syntaxfehler poste ihn mal?
                  Was soll der Mist?

                  Du hast richtig erkannt, dass nur ein Trottel PHP-Code und PHP-Fehlermeldungen liefert, wenn er ein SQL-Problem hat.

                  Pass mal auf Bürschchen, ich habe deinen Vorredner als Trottel bezeichnet, weil es sich hier unverschämt und nicht wirklich hilfsbereit aufführt.

                  Du bezeichnest mich als Trottel, weil ich nicht weiss dass sich eine PHP Fehlermeldung im Zusammenhang mit einer SQL Anweisung von einer SQL-Fehlermeldung unterscheidet. ( Wobei diese fast gleich ist).

                  Und das ist eine grundlose und auch sehr arrogante Beleidigung, deren Konsequenz ich dich im richtigen Leben angemessen spüren lassen würde.

                  Vielleicht sieht man sich ja mal.

                  Bernd

                  1. Hi,

                    Pass mal auf Bürschchen, ich habe deinen Vorredner als Trottel bezeichnet, weil es sich hier unverschämt und nicht wirklich hilfsbereit aufführt.

                    Du fuehrst dich hier unverschaemt und daemlich auf.

                    Du bezeichnest mich als Trottel, weil

                    ... du dich erst mal so weit aus dem Fenster gelehnt hast vielleicht?
                    Sowas solltest du dir vielleicht verkneifen, wenn dir noch nicht mal solche Sachen -

                    ich nicht weiss dass sich eine PHP Fehlermeldung im Zusammenhang mit einer SQL Anweisung von einer SQL-Fehlermeldung unterscheidet.

                    • klar sind.

                    Und das ist eine grundlose und auch sehr arrogante Beleidigung, deren Konsequenz ich dich im richtigen Leben angemessen spüren lassen würde.

                    <klischeeModus> Ein Tuerke namens Bernd ...? Wie sonderbar. </klischeeModus>

                    MfG ChrisB

                    --
                    „This is the author's opinion, not necessarily that of Starbucks.“
                    1. Du fuehrst dich hier unverschaemt und daemlich auf.

                      Seltsam, dachte ich hätte nur eine Frage gestellt und wurde dann grundlos provoziert.

                      Du bezeichnest mich als Trottel, weil

                      ... du dich erst mal so weit aus dem Fenster gelehnt hast vielleicht?
                      Sowas solltest du dir vielleicht verkneifen, wenn dir noch nicht mal solche Sachen -

                      ich nicht weiss dass sich eine PHP Fehlermeldung im Zusammenhang mit einer SQL Anweisung von einer SQL-Fehlermeldung unterscheidet.

                      • klar sind.

                      Ach so, dann ist das hier wohl nur ein Expertenforum, Anfänger haben draussen zu bleiben und auf keinen Fall etwas zu fragen, sonst wird gepöbelt. Soviel Arroganz auf einen Haufen, traurig.

                      <klischeeModus> Ein Tuerke namens Bernd ...? Wie sonderbar. </klischeeModus>

                      Das muss ich nicht verstehen oder?

                    2. Hallo ChrisB und Bernd,

                      An Bernd:

                      Pass mal auf Bürschchen, ich habe deinen Vorredner als Trottel bezeichnet, weil es sich hier unverschämt und nicht wirklich hilfsbereit aufführt.

                      EKKi hat Dir versucht zu helfen, Du hast ihn darauf schon ziemlich unverschämt reagiert, Du kannst gerne sagen, dass Du mit einer Antwort überfordert bist, aber zu meckern, dass eine Antwort nicht Anfängerfreundlich genug sei, ist unverschämt.
                      Auch Boubou hat darauf noch sachlich reagiert, auch wenn Du die Frage nicht beantworten kannst.
                      Darauf hast Du dann mit einer Beleidigung reagiert, was völlig unangebracht war. Bemühe Dich bitte, dich zu beherrschen, auch wenn Du Dich missverstanden fühlst.

                      An ChrisB:

                      <klischeeModus> Ein Tuerke namens Bernd ...? Wie sonderbar.</klischeeModus>

                      Verzichte doch bitte auf solche Äußerungen.

                      Grüße

                      Daniel

                  2. Mahlzeit Bernd,

                    Du hast richtig erkannt, dass nur ein Trottel PHP-Code und PHP-Fehlermeldungen liefert, wenn er ein SQL-Problem hat.

                    Pass mal auf Bürschchen, ich habe deinen Vorredner als Trottel bezeichnet, weil es sich hier unverschämt und nicht wirklich hilfsbereit aufführt.

                    Bürschchen ...?

                    Du bezeichnest mich als Trottel, weil ich nicht weiss dass sich eine PHP Fehlermeldung im Zusammenhang mit einer SQL Anweisung von einer SQL-Fehlermeldung unterscheidet. ( Wobei diese fast gleich ist).

                    Ähm, nein. Es sind grundsätzlich verschiedene Meldungen aus verschiedenen Gründen. Und sie liefern auch unterschiedliche Qualitäten von Informationen.

                    Und das ist eine grundlose und auch sehr arrogante Beleidigung, deren Konsequenz ich dich im richtigen Leben angemessen spüren lassen würde.

                    Es tut mir leid, dass ich versucht habe, Dir zu helfen. Ein derart kindisches, aggressives und proletenhaftes Verhalten ("Ich weiß nix und Ihr habt mir gefälligst eine für mich verständliche Lösung zu liefern und ich hab überhaupt keinen Bock, mir die Grundlagen dessen, was ich versuche, anzueignen und wenn Ihr nicht alle brav artig seid, hau ich Euch eine rein!") erfährt normalerweise keinerlei Unterstützung von mir - daher ist dieser Thread für mich ab jetzt auch Geschichte.

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Wie lautet der syntaxfehler kannst du den mal posten?

    1. Wie lautet der syntaxfehler kannst du den mal posten?

      Warning: sqlite_query() [function.sqlite-query]: near "select": syntax error in xxxx.php on line 163

  3. Hallo,

    $sql = "insert into $tbl4(idlab,idurl,tme)values(select id from $tbl3 where lab='$q',select id from $tbl1 where b64url='$b','$d');";

    wenn Du ein SQL-Problem hast, dann ist SQL-Code von Interesse, nicht PHP-Code, der SQL-Code generiert.

    Sprich: Wie lautet das generierte SQL-Statement?

    Vom Prinzip her sieht es ja wie folgt aus:

      
    INSERT INTO  
        {tabelle} (  
        idlab,        -- optimierbare Spaltennamen  
        idurl,  
        tme  
    )  
    VALUES (  
        SELECT id FROM {tabelle2} WHERE lab = '{wert}',  
        SELECT id FROM {tabelle3} WHERE b64url = '{anderer wert}',  
        '{dritter Wert}'  
    );  
    
    

    Wenn eine der beiden SELECT-Anweisungen in der VALUES-Klausel (oder auch beide) mehr als einen Wert zurückliefert, dann muss das einen Syntaxfehler hervorrufen. Ob SQLite die von Dir verwendete Syntax überhaupt unterstützt, kann ich Dir nicht sagen. MS SQL Server ließe solche Unterabfragen an dieser Stelle nicht zu. Dafür gibt es INSERT INTO ... SELECT:

      
    INSERT INTO  
        {tabelle}  
        ({spaltenliste})  
    SELECT  
        {spalten}  
    FROM  
        {tabellen}  
    WHERE  
        {einschränkung}  
    
    

    Bei dieser Form sollten Unterabfragen möglich sein.

    Freundliche Grüße

    Vinzenz

  4. $sql = "insert into $tbl4(idlab,idurl,tme)values(select id from $tbl3 where lab='$q',select id from $tbl1 where b64url='$b','$d');";

    Da das nicht funktionierte und mein Grundwissen anscheinend nicht ausreicht diese wertvollen Antworten hier auzuwerten, habe ich ein wenig hin und her experimentiert und bin so zu einer Lösung gekommen, die ich noch im Archiv wissen möchte, falls sich wieder mal jemand wie ich hierhin verirrt.

    So funktioniert es:(lediglich selects in klammern)
    $sql="insert into $tbl4(idlab,idurl,tme)values((select id from $tbl3 where lab='$q'),(select id from $tbl1 where b64url='$b'),'$d');";