Php Problem

  • PHP
    INSERT INTO `tabelle` (`spalte1`, `spalte2`) VALUES ('eintrageins-wert1', 'Eintrageins-wert2'), ('eintragzwei-wert1', 'eintragzwei-wert2')

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • PHP
    INSERT INTO `tabelle` (`spalte1`, `spalte2`) VALUES ('eintrageins-wert1', 'Eintrageins-wert2'), ('eintragzwei-wert1', 'eintragzwei-wert2')


    Er will die Einträge in mehrere Tabellen gleichzeitig eintragen
    und nicht mehrere Einträge in eine Tabelle ^^.


    Mit einem SQL Befehl gehts nicht entweder du führst die einzelnen SQL Befehle mehrmals über mysql_query aus oder du nutzst Begin Transaction


    SQL
    BEGIN; 
    INSERT INTO `tabelle` (`spalte1`, `spalte2`) VALUES ('eintrageins-wert1', 'Eintrageins-wert2');
    
    
    INSERT INTO `tabelle2` (`spalte1`, `spalte2`) VALUES ('eintrageins-wert1', 'Eintrageins-wert2');
    
    
    COMMIT;
  • Eine Transaction muss er nur machen wenn er aus einer For/While Schleife ständig mehrere Einträge machen muss.


    Wenn das so ist einfach unter einander einfach den nächsten mysql_query() ausführen.


    Ich weiss nicht wie eine Transaction in mysql_query() funktioniert, vielleicht kannst du mich da mal aufklären :)


    Aber ich empfehle zu oft PDO oder MySQLi nur noch zu verwenden da mysql_query() seit PHP 5.5 als veraltet gilt und bald aus der Libery entfernt wird.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.


  • Also Transactions können die Performance was die Abarbeitung der SQL- Befehle angeht erhöhen.


    Bei mysql_query() musst du leider die einzelnen elemente der Transaktion einzeln ausführen sprich


    mysql_query("BEGIN;");
    .... Befehle
    mysql_query("COMMIT;");


    PDO hat dafür extra funktionen nur funktioniert eine Transaktionen nur bei der Tabelleneigenschaft InnoDB .


    Der Grund dafür das man alles einzeln ausführen muss liegt darin das mysql_query() die Ausführung von mehreren Anweisungen nicht unterstützt, sprich du kannst keine zwei INSERT - Befehle in einem Query ausführen. Insert into ....; Insert Into ... ;

  • Das es nicht in der gleichen Query geht ist mir schon klar. nur nach dem einfügen eines Datensatzes wird die Query nicht wieter bearbeitet deshalb ist eine Transaction hierfür nicht notwendig finde ich. :)


    Ist InnoDB eigentlich nicht standartmäßig? Ich besitze nur diesen Typ.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Das es nicht in der gleichen Query geht ist mir schon klar. nur nach dem einfügen eines Datensatzes wird die Query nicht wieter bearbeitet deshalb ist eine Transaction hierfür nicht notwendig finde ich. :)


    Ist InnoDB eigentlich nicht standartmäßig? Ich besitze nur diesen Typ.


    Jop InnoDB ist standardmäßig , aber man kann auch ganz easy auf MyISAM oder einer anderen Storage-Engine wechseln sry hab mich oben verschrieben das sind Tabelleneigenschaften

  • Ich bin erst gegen Nachmittag oder Abend da. Schreibe mich privat an dann kann ich schauen dir nachher per Teamviewer zu helfen.


    Liebe Grüße
    palwal

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • also ich möchte jetzt in PHP zwei unterschiedliche tabellen gleichzeitig bearbeiten-


    zeig uns dazu mal deine tabellenstruktur und was du genau machen möchtest.


    im grunde geht das mit einem Inner Join damit kannst du zwei Tabellen bearbeiten , welche voneinander abhängig sind falls das nicht der Fall sein sollte so musst du wieder jedes Query einzeln abschicken

    SQL
    UPDATE `tabelle1`, `tabelle2` SET `tabelle1`.`spalte2` = 5, `tabelle2`.`spalte2` = 'blub' WHERE `tabelle1`.`id` = `tabelle2`.`id` AND `tabelle1`.`spalte1` = 2;