• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Update w 2 tabelach jednoczesnie

VPS Starter Arubacloud
+1 głos
1,075 wizyt
pytanie zadane 3 lipca 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 4 lipca 2018 przez hiper007

Witam!

Posiadam dwie tabele:

-palety

-opk_all

$procent_wyp=$_POST['procent_wyp'];		
$myjnia=$_POST['myjnia'];		
$zdjecia=$_POST['zdjecia'];	

W obu tabelach chcę dokonać Update:

UPDATE palety SET procent_wyp='$procent_wyp',myjnia='$myjnia',zdjecia='$zdjecia' WHERE data_rozlad='$data_rozlad' AND data_start='$data_start'

To jest update tylko w tabeli palety, jak go zmodyfikować,żeby zrobić update również w tabeli opk_all w jednym zapytaniu?

Obie tabele zawierają kolumny procent_wyp,myjnia,zdjecia,data_rozlad,data_start
 

Z góry dzięki ;)

komentarz zamknięcia: Problem rozwiazany

1 odpowiedź

+1 głos
odpowiedź 3 lipca 2018 przez Chess Szeryf (76,710 p.)
wybrane 4 lipca 2018 przez hiper007
 
Najlepsza
update tbl_test,tbl_test2 set tbl_test.num1 = 100,tbl_test2.num1=100 where tbl_test.num2 = 5 and tbl_test2.num2 = 5;

https://dev.mysql.com/doc/refman/8.0/en/update.html

#Version1:

<?php
$link = new mysqli('localhost','root','','databasex');

if ($link->connect_errno) {
	printf("Connect failed: %s\n", $link->connect_error);
	exit();
}

$further_part1 = 'UPDATE';
$tbl_double = ['tbl_test','tbl_test2'];
$further_part2 = 'SET num1=49 where num2=5;';

function double_print($conn,$first_part,$arr,$second_part,$z=0,$status=null) {

	if($z<count($arr)) {
		
		$status = $conn->query($first_part.' '.$arr[$z].' '.$second_part);
	
		double_print($conn,$first_part,$arr,$second_part,$z+1);

	}

	return $status;

}

var_dump(double_print($link,$further_part1,$tbl_double,$further_part2));
?>

#Version2:

<?php
// ...

function double_print($conn,$first_part,$arr,$second_part,$successful=null,$z=0,&$status=null) {
 
	if($z<count($arr)) {
		
		$status = (bool)$conn->query($first_part.' '.$arr[$z].' '.$second_part);
		
		if($successful===true) {
			var_dump((bool)$status);
		}
		
		double_print($conn,$first_part,$arr,$second_part,$successful,$z+1,$status);
		
	} 
	
	if($successful!==true) {
		return ($status);
	}
	
}

(double_print($link,$further_part1,$tbl_double,$further_part2,true));
?>

#Other:

<?php
$link = new mysqli('localhost','root','','databasex');

$a_lot_of_tables = array('tbl_test','tbl_test2');

foreach($a_lot_of_tables as $table) {
	$final = $query = $link->query('UPDATE '.$table.' SET num1=54 WHERE num2=9;');
	var_dump($final);
}
?>

#Version2:

Syntax:

bool double_print (mysqli $connect, string $first_part_query, array $array, string $second_part_query, [bool $status1=null], [int $iterator=0], [bool $status2=null]); 

Parametr $connect odpowiada za połączenie się z bazą.  $first_part_query, to pierwsza część zapytania do bazy, np. delete. Następny argument - $array, to tablica, w niej są nazwy naszych tabel, które są w bazie danych. $second_part_query - druga część zapytania SQL. Ostatnie 3 parametry są opcjonalne, to znaczy nie trzeba ich pisać, ponieważ mają ustawione początkowe wartości. $status1 odpowiada za wyświetlenie komunikatów o powodzeniu zapytania bool(true) lub niepowodzeniu bool(false). $iterator mówi skryptowi od którego elementu tablicy ma wykonywać zapytania, dla jakich tabel. $status2 - nie można chyba ustawić innych wartości temu argumentowi niż $status2, ponieważ wtedy skrypt zwróciłby błąd.

Gdy $status1 jest ustawiona na true, to wtedy pokażą się wszystkie komunikaty o powodzeniu akcji zapytania (bool(true), bool(false), itd.). Natomiast jeśli jego wartość wynosi false lub ma jakąkolwiek inną wartość różną od true, to funkcja zwraca tylko ostatni rezultat zapytania np. bool(false).

To tyczy się tylko #Version2, bo składnia #Version1 jest trochę inna.

Example:

$further_part1 = 'DELETE FROM';
$tbl_double = ['tbl_test','tbl_test2'];
$further_part2 = 'WHERE num2=9;';

(double_print($link,$further_part1,$tbl_double,$further_part2,true));
// var_dump(double_print($link,$further_part1,$tbl_double,$further_part2));

Z tych tabel: tbl_test, tbl_test2:

+------+------+
| num1 | num2 |
+------+------+
|  101 |    5 |
|  101 |    5 |
|   40 |    9 |
+------+------+

rezultat jest następujący:

+------+------+
| num1 | num2 |
+------+------+
|  101 |    5 |
|  101 |    5 |
+------+------+

Skrypty: #Version1, #Version2 nie mają autorskiej (czytaj: tutaj/w tym kodzie mojej) obsługi błędów, czyli np. można wpisać pod zmienną $iterator, np. 55 i nie ma/wyświetla błędu, że jesteśmy poza elementami tablicy (chodzi oto, że warunek w if nie jest prawdziwy i nie dochodzi do rekurencji).

komentarz 3 lipca 2018 przez hiper007 Stary wyjadacz (11,270 p.)
Niebardzo rozumiem zapis po where.. :) dlaczego jest tam num2?
komentarz 3 lipca 2018 przez Chess Szeryf (76,710 p.)
Zaaktualizuj wartość num1 w tabeli tbl_test i tbl_test2, gdzie w kolumnie num2 jest wartość 5.
komentarz 4 lipca 2018 przez hiper007 Stary wyjadacz (11,270 p.)
Dzieki :) jestes wielki ::

Podobne pytania

0 głosów
2 odpowiedzi 254 wizyt
pytanie zadane 13 lutego 2017 w PHP przez nielotweb Bywalec (2,240 p.)
0 głosów
1 odpowiedź 1,323 wizyt
0 głosów
1 odpowiedź 198 wizyt
pytanie zadane 11 listopada 2017 w SQL, bazy danych przez `Krzychuu Stary wyjadacz (13,940 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...