SQL in While Loop

  • Hej


    Kann mir Jemand verraten, wieso dieses Konstrukt nicht richtig funktioniert:

    Code
    1. $sql = WCF::getDB()->prepareStatement("SELECT userID blablabla");
    2. $sql->execute(array());
    3. while($row = $sql->fetchArray()) {
    4. $var = $row['userID'];
    5. $sql = WCF::getDB()->prepareStatement("INSERT INTO blablabla");
    6. $sql->execute(array());
    7. }

    Dazwischen ist noch eine Curl Abfrage, tut hier aber nichts zur Sache, es funktioniert ohne genauso wenig. Außerdem habe ich mir mal den gesamten SQL gespart. Relevant ist eigentlich nur, dass erst eine SELECT Abfrage läuft und im anschließenden While Loop ein INSERT unter anderem mit einem Wert aus dem SELECT. Das funktioniert an sich auch, allerdings nur einmal, also bricht der While Loop ab. Ohne das INSERT SQL und mit einer echo Ausgabe der SELECT Werte sind es sehr viele Werte, ergo sollten es auch mehrere Inserts sein. Das Problem scheint also definitiv der SQL im While zu sein.


    Kann mir einer sagen, wieso das nicht wie gewünscht funktioniert? Der selbe Aufbau funktioniert mit mysqli_query problemlos.

  • Du überschreibst in der Schleife $sql

    https://update.mysterycode.de/vortex/ - https://update.mysterycode.de/tornado/

    https://update.wsc-connect.com/ - https://packages.softcreatr.de/vortex/ - https://www.viecode.com/update/vortex/

    https://www.cls-design.com/update/vortex/ - https://www.cls-design.com/update/tornado/

    Mehr Paketserver…

  • Vielleicht noch eine kleine „Optimierung“:


    PHP
    1. $sql = WCF::getDB()->prepareStatement("SELECT userID blablabla");
    2. $sql->execute([]);
    3. $insertSQL = WCF::getDB()->prepareStatement("INSERT INTO blablabla");
    4. while($row = $sql->fetchArray()) {
    5. $var = $row['userID'];
    6. $insertSQL->execute([]);
    7. }


    Sprich: Das preparen des Insert-Statements außerhalb der Schleife vorzunehmen.