Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][MySQL][PHP] Optymalizacja i sprawdzenie skryptu, Dziwne wyniki po uruchomieniu skryptu
nikos
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 30.03.2009

Ostrzeżenie: (0%)
-----


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


  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3. ini_set( 'display_errors', 'On' );
  4. error_reporting( E_ALL );
  5. // serwer 1
  6. $servername1 = "localhost";
  7. $username1 = "root";
  8. $password1 = "";
  9. $dbname1 = "sklep";
  10. //serwer 2
  11. $servername2 = "localhost";
  12. $username2 = "root";
  13. $password2 = "";
  14. $dbname2 = "test";
  15.  
  16. $connect1 = mysqli_connect($servername1, $username1, $password1, $dbname1);
  17. $connect2 = mysqli_connect($servername2, $username2, $password2, $dbname2);
  18.  
  19.  
  20. $query1 = "SELECT * FROM `sklep_towary` WHERE STAN < 3";
  21. $query2 = "SELECT * FROM `sklep_towary` WHERE STAN > 2";
  22.  
  23.  
  24. $result1 = mysqli_query($connect1, $query1);
  25. $result2 = mysqli_query($connect1, $query2);
  26.  
  27. if(mysqli_num_rows($result1) > 0){
  28. while($row = mysqli_fetch_assoc($result1))
  29. { $indeks = $row['INDEKS'];
  30. $stan = $row['STAN'];
  31. $zapytanie = "UPDATE dimensions_available_phones SET avaiblable = 0 WHERE subiekt_id ='$indeks' " or die(mysql_error());
  32. $wynik = mysqli_query($connect2, $zapytanie);
  33.  
  34. }
  35. if($wynik){
  36. echo'Wyłączono';
  37. }
  38. }
  39. if(mysqli_num_rows($result2)>0){
  40. while($row = mysqli_fetch_assoc($result2)){
  41. $indeks = $row['INDEKS'];
  42. $stan = $row['STAN'];
  43. $zapytanie2 = "UPDATE dimensions_available_phones SET avaiblable = 1 WHERE subiekt_id ='$indeks' " or die(mysql_error());
  44. $wynik2 = mysqli_query($connect2, $zapytanie2);
  45. }
  46.  
  47. }
  48.  
  49. if($wynik2){
  50. echo 'Włączono';
  51. }
  52.  
  53.  
  54.  
  55. ?>


Dodam, że skrypt trochę długo się wykonuje i proszę o wskazówki jak można by było go zmodyfikować.
Oto test:
  1. UPDATE sklep_towary SET STAN = 5 WHERE INDEKS IN (12047,
  2. 08824,
  3. 08578,
  4. 13604,
  5. 15846,
  6. 17870)


i to daje
  1. SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 0 1203
  2. SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 1 1486

i dalej jak uruchomię na pierwszej bazie
  1. [SQL]
  2. UPDATE sklep_towary SET STAN = 0 WHERE INDEKS IN (12047,
  3. 08824,
  4. 08578,
  5. 13604,
  6. 15846,
  7. 17870)

[/SQL]

Dostaje
  1. SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 0 1211
  2. SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 1 1478

Pozdrawiam

Ten post edytował nikos 19.07.2017, 13:03:14
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 04:54