Witam!
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
header('Content-Type: text/html; charset=utf-8'); // 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
Ten post edytował nikos 19.07.2017, 13:03:14