Mam skrypt, który aktualizuje dane z jednej bazy MySQL z drugą.
Po zrobieniu testu na zamianie 6 rekordów w jednej bazie są one zmieniane w drugiej. Ale:
Ogólna ilość dostępnych i niedostępnych produktów zmienia się o 8 zamiast o 6?
Ogólnie pobieram rekordy gdzie stan jest <3 i w drugiej bazie wyłączam je avaiblable = 0
A potem sprawdzam rekordy które są >2 i włączam za pomocą avaiblable = 1
<?php // serwer 1 $servername1 = "localhost"; $username1 = "root"; $password1 = ""; $dbname1 = "sklep"; //serwer 2 $servername2 = "localhost"; $username2 = "root"; $password2 = ""; $dbname2 = "test"; $connect1 = mysqli_connect($servername1, $username1, $password1, $dbname1); $connect2 = mysqli_connect($servername2, $username2, $password2, $dbname2); $query1 = "SELECT * FROM `sklep_towary` WHERE STAN < 3"; $query2 = "SELECT * FROM `sklep_towary` WHERE STAN > 2"; $result1 = mysqli_query($connect1, $query1); $result2 = mysqli_query($connect1, $query2); if(mysqli_num_rows($result1) > 0){ while($row = mysqli_fetch_assoc($result1)) { $indeks = $row['INDEKS']; $stan = $row['STAN']; $zapytanie = "UPDATE dimensions_available_phones SET avaiblable = 0 WHERE subiekt_id ='$indeks' " or die(mysql_error()); $wynik = mysqli_query($connect2, $zapytanie); } if($wynik){ } } if(mysqli_num_rows($result2)>0){ while($row = mysqli_fetch_assoc($result2)){ $indeks = $row['INDEKS']; $stan = $row['STAN']; $zapytanie2 = "UPDATE dimensions_available_phones SET avaiblable = 1 WHERE subiekt_id ='$indeks' " or die(mysql_error()); $wynik2 = mysqli_query($connect2, $zapytanie2); } } if($wynik2){ } ?>
Dodam, że skrypt trochę długo się wykonuje i proszę o wskazówki jak można by było go zmodyfikować.
Oto test:
UPDATE sklep_towary SET STAN = 5 WHERE INDEKS IN (12047, 08824, 08578, 13604, 15846, 17870)
i to daje
SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 0 1203 SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 1 1486
i dalej jak uruchomię na pierwszej bazie
[SQL] UPDATE sklep_towary SET STAN = 0 WHERE INDEKS IN (12047, 08824, 08578, 13604, 15846, 17870)
[/SQL]
Dostaje
SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 0 1211 SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 1 1478
Pozdrawiam