Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]mysqli_commit
kamilo818
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Cześć, moj kod:
  1. $conn = self::getConnection();
  2. mysqli_autocommit($conn,FALSE);
  3. $SQL = "UPDATE fr_product SET name='".$name."', image='".$image."',description='".$description."',price='".$price."',code='".$code."',seo_title='".$seo_title."',seo_keywords='".$seo_keywords."',seo_description='".$seo_description."',newest='".$newest."',recommended='".$recommended."',promotion='".$promotion."',image_promotion='".$image_promotion."',promotion_for_home='".$promotion_main."',products_category='".$category."' WHERE id='".$id."'";
  4. $conn->query($SQL);
  5.  
  6.  
  7. foreach($filters as $k=>$f){
  8.  
  9. $conn->query("UPDATE fr_product_filter SET filter_valuee='".$f."' WHERE product_code='".$code."' AND filter_id='".$k."'");
  10.  
  11. }
  12.  
  13.  
  14. if(mysqli_commit($conn)){
  15. echo '<div class="alert alert-success" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Operacja wykonana poprawnie!</div>';
  16. }else{
  17. mysqli_rollback($conn);
  18. echo '<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><strong>Nieoczekiwany błąd. </div>';
  19.  
  20. }
  21.  
  22. mysqli_close($conn);
  23. break;


  1. if(mysqli_commit($conn)
- zawsze jest true mimo że
  1. $conn->query("UPDATE fr_product_filter SET filter_valuee='".$f."' WHERE product_code='".$code."' AND filter_id='".$k."'");
nie wykonuje się (filter_valuee zamiast filter_value)

Czy ja to zle stosuję?

Chce uzyskać efekt ze jeśli któreś zapytanie nie wykona sie poprawnie to wszystko wraca do punktu poczatkowego.

Będę wdzieczny za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
@nospor wg dokumentacji tak to właśnie działa. Przykłady nawet ilustrują podobny przypadek.
Chyba masz innego manuala niz ja. Owszem, w moim manualu jest podobny przyklad co tutaj, ale tylko podobny. Przyklad z manuala w zaden sposob nie pokazuje, ze mysqli_commit zarzadza zepsutymu zapytaniami. Przyklad w manualu i IF mowi jedynie, ze commit sie nie powiodl. Nie mowi nic o pozostalych zapytaniach.


Tak wiec jeszcze raz: COMMIT nie sluzy do mowienia,czy zapytania sie powiodly czy nie. Commit sluzy do zatwierdzenia zapytan, ktore sie powiodly. To user ma wiedziec czy sie zapytania powiodly czy nie i w zaleznosci od tego ma wywolac albo COMMIT albo ROLLBACK - proste.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 16:53