[MySQL] Insert & Update mit einem Query?

B

ByeBye 242513

Hallo Community,
ich habe zwei Tabellen (A & B) in meiner Datenbank und möchte in einem Rutsch die Daten von Tabelle A teilweise in Tabelle B kopieren und die restlichen Felder (bFeld3, bFeld4) mit Variablen füllen.

Ich arbeite mit Prepared Statement und möchte sowenig Anfragen wie möglich an die Datenbank stellen. Welcher Query wäre für diese Abfrage optimal?

SQL:
TableA
---------------------------------------
id   aFeld1   aFeld2
---------------------------------------
1    Baum     Grün
2    Blume    Rot

SQL:
TableB
---------------------------------------
id   bFeld1   bFeld2  bFeld3  bFeld4
---------------------------------------
 
Zuletzt bearbeitet von einem Moderator:
Nach deinem Text brauchst du keine prepared Statements. Ausser du machst noch Dinge, die du nicht geschrieben hast.

1) INSERT INTO a(feld1, feld2..) SELECT feld1, feld2... FROM b WHERE argument
2) UPDATE a SET feld1=1....
 
Ich verwende in dem Projekt ausschließlich Prepared Statement, deswegen wäre eine Lösung mit damit vorteilhaft.

Mein Insert-Code sieht wie folgt aus, jedoch fehlt die Update-Funktion.
PHP:
$sql = 'INSERT INTO
           TableB
           (bFeld1, bFeld2, bFeld3, bFeld4)
         SELECT
           aFeld1, aFeld2
         FROM
           TableA
         WHERE
           ID=?';
if($stmt = $db->prepare($sql)) {
  $stmt->bind_param('i', $ID);
  $stmt->execute();
  $stmt->close();
}
 
Ja, und was ist jetzt genau die Frage?
Ein Update Prepared Statemetn funktioniert gleich.
Das Update kann ich dir nicht basteln, da ich nur weiss, dass du ein Update haben willst.

Deine Bisherige Fragestellung ist etwa so:
"Guten Tag, ich hätte gerne ein Auto mit Räder."
 
Hi,

natürlich kannst du auch mit prepared statements arbeiten, Yaslaw meinte wahrscheinlich dass es hier auch ohne gehen würde.

Dein SQL wird so aber wahrscheinlich nicht laufen. Du willst 4 Spalten inserten, selektierst aber nur 2. Solange die anderen beiden keine default Values haben wird es hier krachen. Hier muss die Anzahl gleich sein.
Das Update kannst du ja danach als Extra Statement durchlaufen lassen.

Grüße,
BK
 
Sorry, wenn ich mich etwas undeutlich ausdrücke. Ich hätte das Update gerne in mein Query integriert, deswegen ist mein jetziger Query auch noch unfertig. Aber ich werde wohl um eine zweite Abfrage nicht herumkommen.
 
Die beiden Felder sollen mit Variablen gefüllt werden, die der Besucher vorher in Input-Boxen erzeugt hat.
 

Neue Beiträge

Zurück