sql >> Database >  >> RDS >> Mysql

pdo voer de fout van give uit

Uit de PDO::prepare handleiding ;

Dat betekent (helaas) dat je je bindingen moet dupliceren met secundaire namen om dezelfde waarde twee keer in een query te gebruiken. Niet mooi, zoiets als;

$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:aangezien MySQL de VALUES trefwoord in ON DUPLICATE KEY om de parameters niet te hoeven herhalen, kunt u voor dit exacte geval beter het antwoord van @YourCommonSense gebruiken.



  1. Moet ik mysql_real_escape_string het wachtwoord invoeren dat in het registratieformulier is ingevoerd?

  2. Wat zijn de verschillen tussen de datatypes BLOB en TEXT in MySQL?

  3. Functie wijzigen in PDO

  4. JPA - Geen persistentie-provider voor EntityManager met de naam {{NAME_HERE}}