sql >> Database teknologi >  >> RDS >> Mysql

pdo execute give's fejl

Fra PDO::prepare-manualen ;

Det betyder (desværre), at du bliver nødt til at duplikere dine bindinger med sekundære navne for at bruge den samme værdi to gange i en forespørgsel. Ikke smuk, sådan noget som;

$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();

EDIT:Da MySQL tillader VALUES søgeord i ON DUPLICATE KEY for ikke at skulle gentage parametrene, ville du være bedre stillet ved at bruge @YourCommonSenses svar til netop dette tilfælde.



  1. VÆLG brugere fra MySQL-database efter privilegier bitmaske?

  2. Sådan installeres MySQL 8 på Windows

  3. MySQL flere indekser vs multi-kolonne indeks til søgning

  4. MySql - HAVING vs WHERE