2010-05-12 1 views

risposta

0

si può certamente utilizzare ON DUPLICATE KEY UPDATE con PHP + MySQL. L'hai provato? Se hai, quale problema hai incontrato?

+0

Siamo spiacenti, la mia domanda non era chiaro, così ho modificato. Ho usato ON DUPLICATE KEY UPDATE molte volte, ma mai con una dichiarazione preparata. Ho cercato diversi posti per le istruzioni su come si poteva fare ma non ho trovato nulla. Prima di sprecare un pomeriggio di sperimentazione inutile ho pensato di verificare se qualcuno potesse confermare che questo è effettivamente fattibile. -Jim –

2

Si dovrebbe essere in grado di eseguire ogni query SQL come una dichiarazione preparata. Non so perché pensi ci sarebbe alcuna eccezione per ON DUPLICATE KEY UPDATE. Provalo prima e chiedici se ci sono problemi.

+0

Grazie Emil. Farò un tentativo, anche se non riesco a immaginare come funzionerebbe. Vorresti aggiungere l'ON DUPLICATE KEY UPDATE alla query in mysqli_prepare e avere anche i valori di sostituzione come? marchi? Se funzionasse, sarebbe molto utile per me. Riferirò sui miei risultati, anche se potrebbe essere un po 'di tempo prima che abbia tempo di provarlo. Jim –

18

Ecco un esempio generalizzato di questo uso:

$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; 
}