Select Join zusammen mit Update verwenden?

Blackfog

Mitglied
Hallo,

ich mache mal einen neuen Thread auf, um den alten nicht aus dem kontext zu reißen.

Kann man SECLECt und UPDATE kombinieren?

Sprich die beiden folgenden Codes:

PHP:
$query = "SELECT USA.Firstname, USA.Lastname
                     FROM User_Shipping_Adress as USA
                           INNER JOIN Order as O
                                 ON O.UserID=USA.UserID
                           INNER JOIN Order_attributes OA
                                 ON O.ID = OA.OrderID
                               WHERE OA.adress=NULL";

PHP:
$query = "UPDATE order_attributes SET order_info = "O:32:\"Address\":8:{s:6:\"street\";s:11:\"Musterstr\";s:12:\"streetNumber\";s:3:\"123\";s:4:\"city\";s:10:\"Musterstadt\";s:3:\"zip\";s:5:\"11111\";s:9:\"firstName\";s:4:\"USA.Firstname\";s:8:\"lastName\";s:5:\"USA.Lastname\";}"  WHERE order_info IS NULL";

Sprich die Abgerufenen Daten USA.Firstname,... müssten auch in das" Set order_info= " an entsprechener Stelle eingesetzt werden.
Ist sowas möglich? Ich habe schon ein bisl was probiert, aber ohne Erfolg.
Es würde mich freuen, wenn mir jemand helfen könnte.
Schon mal vielen Dank im Vorraus.
Grüße
 
Es ist nicht wirklich eine PHP-Frage sondern eher eine Mysql bzw. Relationale Datenbanken Frage.

Aber man könnte ein Subquery im Update-Statement Definieren.

Als kleines beispiel mit wäre das z.B. das hier etwas
 
Hi,
Danke dir für deine Antwort. Werde ich mal probieren. Könntest du mir noch verraten wie ich die Daten vom select einzeln nutzbar bekomme?
 
Richtig.
Im subquery ist ja das select drin. Die Daten USA. Firstname, USA.lastname bräuchte ich jeweils einzeln um sie an unterschiedlichen Stellen im query einzusetzen, wenn das geht

Oder müsste ich das jeweils per einzelnem select einbinden?
 
Funktioniert nicht wirklich. Ich bekomme das subquery nicht in das update query funktionsfähig eingesetzt. Denn es müsste ja dann beim update query im Set ... = mitten im Text stehen?
Ich bin zu doof irgendwie.
 
So, ich habe es jetzt soweit am laufen. Allerdings läuft es nicht zeilenweise.

Sondern nimmt Aus der ersten Zeile mit IS NULL die Daten und trägt diese ebenfalls bei den anderen ein.
Das ist aber falsch. Da jede Zeile eine ID hat, soll dann entsprechend der id auch die Daten hinterlegt werden.
Wie bewerkstellige ich das? Füge gleich mal den Code an:

PHP:
$query1 = 'SELECT USA.Street, USA.Streetnumber, USA.City, USA.Zipcode, USA.Firstname, USA.Lastname
                     FROM user_shippingaddress as USA
                           INNER JOIN s_order as O
                                 ON O.UserID=USA.UserID
                           INNER JOIN order_attributes OA
                                 ON O.ID = OA.OrderID
                               WHERE OA.address IS NULL';
                              

$result = mysqli_query($con, $query1);
while ($row = mysqli_fetch_assoc($result)){
     $street = $row['Street'];
     $streetnumb = $row['Streetnumber'];
     $city = $row['City'];
     $zip = $row['Zipcode'];
                $firstname = $row['Firstname']; 
                $lastname = $row['Lastname'];         
                          }



mysqli_query($con, $query1);

                             




$query = "UPDATE order_attributes SET address = 'O:32:\"Address\":8:{s:6:\"street\";s:11:\"$street\";s:12:\"streetNumber\";s:3:\"$streetnumb\";s:4:\"city\";s:10:\"$city\";s:3:\"zip\";s:5:\"$zip\";s:9:\"firstName\";s:4:\"$firstname\";s:8:\"lastName\";s:5:\"$lastname\";s:10:\"postNumber\";i:;s:7:\"country\";s:11:\"Deutschland\";}' WHERE address IS NULL ";
 
1. Wieso hast du nach der while-Schleife nochmal den Select-Query abgeschickt?
2. dein Update-Query wird nur definiert und das außerhalb einer Schleife, kann also es nur den 1 Datensatz aktualisieren.
3. im hier gezeigten Quellcode wird das Update-Query nicht einmal abgeschickt.
 
Zurück