Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализирайте редовете, след като mysql изберете foreach

Първи въпрос, изобщо не се възползвахте от подготвени изявления. Използвайте параметри (? в заявката) и след това ги попълнете със стойности в execute() обадете се.

Също така, подгответе заявката си извън цикъл и я изпълнете вътре. Това е едно от основните предимства на изготвянето на изявления предварително, има по-малко разходи, когато се изготвят само веднъж.

И накрая, няма нужда да проверявате базата данни преди вашата заявка и след това да изпълнявате една от двете заявки. Просто оставете MySQL да провери дали стойността вече съществува с INSERT...ON DUPLICATE KEY UPDATE синтаксис. Това разчита на правилното настройване на базата данни, така че трябва да има UNIQUE индекс на (session.usr_id, session.site_id) .

Това е непроверено, но трябва да ви накара да продължите:

$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. Как да настроите Collation в MySQL база данни с Django 2.* mysqlclient?

  2. Как да получа изходни параметри от съхранената процедура на MySQL в Rails?

  3. Проектиране на база данни:система за инвентаризация и продажби?

  4. Дублирани записи в mySQL с помощта на jQuery ajax и PHP

  5. PHP SQL Foreach изявление