Mysql
 sql >> Datenbank >  >> RDS >> Mysql

pdo führt den Fehler von give aus

Aus dem PDO::prepare manual ;

Das bedeutet (leider), dass Sie Ihre Bindungen mit sekundären Namen duplizieren müssen, um denselben Wert zweimal in einer Abfrage zu verwenden. Nicht hübsch, so etwas wie;

$sth = $db->prepare(
  'INSERT INTO track (`rsname`, `overallranknow`, `overalllevelnow`, `overallxpnow` )' .
    'VALUES (:name, :Overalln, :Overall1, :Overall2) '. 
    'ON DUPLICATE KEY UPDATE ' .
      "rsname = :name_2"  .
      "overallranknow = :Overalln_2" .
      "overalllevelnow = :Overall1_2" .
      "overallxpnow = :Overall2_2" 
);
$sth->bindValue(':name', $name, PDO::PARAM_STR);
$sth->bindValue(':name_2', $name, PDO::PARAM_STR);
$sth->bindValue(':Overalln', $Overalln, PDO::PARAM_INT);
$sth->bindValue(':Overalln_2', $Overalln, PDO::PARAM_INT);
$sth->bindValue(':Overall1', $Overall[1], PDO::PARAM_INT);
$sth->bindValue(':Overall1_2', $Overall[1], PDO::PARAM_INT);
$sth->bindValue(':Overall2', $Overall[2], PDO::PARAM_INT);
$sth->bindValue(':Overall2_2', $Overall[2], PDO::PARAM_INT);
$sth->execute();

BEARBEITEN:Da MySQL die VALUES Schlüsselwort in ON DUPLICATE KEY Um die Parameter nicht wiederholen zu müssen, ist es besser, die Antwort von @YourCommonSense für genau diesen Fall zu verwenden.