2010-05-12 2 views

Répondre

0

Vous pouvez certainement utiliser ON DUPLICATE KEY UPDATE avec PHP + MySQL. L'as tu essayé? Si oui, quel problème avez-vous rencontré?

+0

Désolé, ma question n'a pas été claire, je l'a édité. J'ai utilisé plusieurs fois UPDATE KEY UPDATE, mais jamais avec une déclaration préparée. J'ai regardé plusieurs endroits pour obtenir des instructions sur la façon dont cela pourrait être fait, mais je n'ai rien trouvé. Avant de gaspiller un après-midi sur une expérimentation futile, j'ai pensé que je vérifierais si quelqu'un peut confirmer que c'est faisable. -Jim –

2

Vous devriez pouvoir exécuter chaque requête SQL en tant qu'instruction préparée. Je ne sais pas pourquoi vous pensez qu'il y aurait une exception pour ON DUPLICATE KEY UPDATE. Essayez-le d'abord et demandez-nous s'il y a des problèmes.

+0

Merci Emil. Je vais essayer, même si je ne peux pas imaginer comment cela fonctionnerait. Souhaitez-vous ajouter le ON DUPLICATE KEY UPDATE à la requête dans mysqli_prepare et aussi avoir les valeurs de remplacement comme? des notes? Si cela fonctionne, ce serait très utile pour moi. Je vais rapporter sur mes résultats, même si cela peut prendre un peu de temps avant que j'ai le temps d'essayer cela. Jim –

18

Voici un exemple généralisé de cette utilisation:

$db->prepare(' 
INSERT INTO tableName (id, col1, col2, col3...) 
VALUES (?,?,?,?) 
ON DUPLICATE KEY 
UPDATE col1 = VALUES(col1), 
     col2 = VALUES(col2), 
     col3 = VALUES(col3) 
'); 

$stmt->bind_param('isss', 
        $id, 
        $col1, 
        $col2, 
        $col3 
       ); 
$db->execute($stmt); 

if ($id == null) { //If you need the auto increment from the insert. 
    $newId = $stmt->insert_id; 
} 
Questions connexes