Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zaktualizuj wiersze po mysql select foreach

Pierwsza kwestia, w ogóle nie korzystałeś z przygotowanych oświadczeń. Użyj parametrów (? w zapytaniu), a następnie wypełnij je wartościami w execute() zadzwoń.

Ponadto przygotuj zapytanie poza pętlą i wykonaj je w środku. Jest to jedna z kluczowych zalet przygotowywania oświadczeń z wyprzedzeniem, ponieważ są one mniejsze, gdy są przygotowywane tylko raz.

Wreszcie, nie ma potrzeby sprawdzania bazy danych przed zapytaniem, a następnie wykonywania jednego z dwóch zapytań. Po prostu pozwól MySQL sprawdzić, czy wartość już istnieje za pomocą INSERT...ON DUPLICATE KEY UPDATE składnia. Polega to na prawidłowej konfiguracji bazy danych, więc powinna istnieć UNIQUE indeks na (session.usr_id, session.site_id) .

To nie zostało przetestowane, ale powinno Cię zachęcić:

$stmt1 = $handler->prepare("SELECT id,comments,likes,views FROM sites WHERE usr_id = ?");
$stmt2 = $handler->prepare("INSERT INTO session SET comments = ?, likes = ?, views = ?, usr_id = ?, site_id = ? ON DUPLICATE KEY UPDATE comments = VALUES(comments), likes = VALUES(likes), views = VALUES(views)");

$stmt1->execute(array($usr_id));
while($row = $stmt1->fetch(PDO::FETCH_ASSOC)) {
    $site_id = $row["id"];
    $stmt2->execute(array($comments, $likes, $views, $usr_id, $site_id));
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyszukiwanie kolumny zawierającej dane CSV w tabeli MySQL pod kątem istnienia wartości wejściowych

  2. Produkty WooCommerce wyświetlające komunikat „Brak w magazynie”, gdy faktycznie ich nie brakuje

  3. Mysql Zliczanie kolejnych pasujących wierszy

  4. Co to jest schemat bazy danych?

  5. wyślij dane do MySQL za pomocą AJAX + jQuery + PHP