Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: SQL Frage - Autoincrement Wert im gleichen query nutzen

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Gibt es einen zuverlässigen Weg, wie man während eines Inserts den autoincrement Wert der ID wiederverwenden kann?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=34308.0

    jaspa

    • Frisch an Board
    • Beiträge: 89
    • Geschlecht:
    Re: SQL Frage - Autoincrement Wert im gleichen query nutzen
    Antwort #1 am: 04. Februar 2016, 14:30:47
    Wenn ich Dich richtig verstehe willst Du die id vom letzten/aktuellen Insert abfragen?

    Schau die die Funktion xtc_db_insert_id() mal an

    https://www.modified-shop.org/wiki/Xtc_db_insert_id%28%29

    Ein Beispiel ist z.B. die Datei admin/includes/classes/categories.php

    Codeblock:

    Code: PHP  [Auswählen]
    if ($action == 'insert') {
          $insert_sql_data = array ('parent_id' => $dest_category_id, 'date_added' => 'now()');
          $sql_data_array = xtc_array_merge($sql_data_array, $insert_sql_data);
          xtc_db_perform(TABLE_CATEGORIES, $sql_data_array);
          $categories_id = xtc_db_insert_id();

     

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: SQL Frage - Autoincrement Wert im gleichen query nutzen
    Antwort #2 am: 04. Februar 2016, 14:37:18
    Ich wollte eigentlich WÄHREND des Inserts die ID in einem anderen Feld mitbenutzen.

    id = auto
    img = id+'.'+file_extension

    Mittlerweile ist mir aufgefallen, dass ich im Code gar nicht bis dahin komme, ohne die ID zu kennen.

    Also habe ich jetzt die unsaubere Variante genommen, dass ich mir zuerst die ID hole:
    Code: PHP  [Auswählen]
                    $autors_id = xtc_db_fetch_array(xtc_db_query("SHOW TABLE STATUS FROM `db1102152` LIKE 'autors'"));
                    $autors_id = $autors_id['Auto_increment'];
     
    ... dann mein File verwurstel ... und dann mit INSERT schreibe.

    Das geht halt jetzt schief, wenn 2 Admins innerhalb der gleichen Zehntelsekunde einen Eintrag vornehmen.
    Aber das merkt man dann gleich, ist halb so wild.

    webald

    • modified Team
    • Beiträge: 2.791
    Re: SQL Frage - Autoincrement Wert im gleichen query nutzen
    Antwort #3 am: 04. Februar 2016, 14:42:55
    http://dev.mysql.com/doc/refman/5.7/en/getting-unique-id.html

    Ich würde das aber über eine Transaction sichern, aber dass geht nur mit InnoDB

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: SQL Frage - Autoincrement Wert im gleichen query nutzen
    Antwort #4 am: 04. Februar 2016, 14:49:04
    Also ginge das in einem Query nur mit so was?

    Code: SQL  [Auswählen]
    INSERT INTO xyz (text) VALUES('irgendwas'); UPDATE xyz SET img=LAST_INSERT_ID()'.jpg';

    webald

    • modified Team
    • Beiträge: 2.791
    Re: SQL Frage - Autoincrement Wert im gleichen query nutzen
    Antwort #5 am: 04. Februar 2016, 14:56:07
    In dem Fall: Kein Update ausführen, sondern erst beim SELECT den ID-jpg-String zusammensetzen.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: SQL Frage - Autoincrement Wert im gleichen query nutzen
    Antwort #6 am: 04. Februar 2016, 14:58:10
    OK, danke!
    10 Antworten
    4770 Aufrufe
    20. Mai 2012, 00:10:04 von karl
    1 Antworten
    2280 Aufrufe
    07. August 2012, 15:35:39 von billybob
    7 Antworten
    5010 Aufrufe
    30. April 2011, 06:33:02 von fishnet
    4 Antworten
    1748 Aufrufe
    04. Mai 2020, 09:57:54 von Hetfield