Correction de l'instruction de mise à jour Python MySQL avec des variables
Lors d'une tentative de mise à jour des enregistrements MySQL à l'aide d'une instruction de mise à jour Python, les utilisateurs peuvent rencontrer des erreurs. Pour résoudre ce problème, il est crucial de vérifier la syntaxe et de garantir sa bonne application.
Déclaration incorrecte :
cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)
Analyse :
L'instruction incorrecte échoue en raison d'une concaténation de chaîne incorrecte et d'un espace réservé manquant pour la variable « Minute ». La façon correcte d'écrire cette déclaration est :
Déclaration correcte :
cursor.execute (""" UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server=%s """, (Year, Month, Day, Hour, Minute, ServerID))
Syntaxe alternative :
Alternativement, la manipulation de chaînes peut être utilisée :
cursor.execute ("UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server='%s' " % (Year, Month, Day, Hour, Minute, ServerID))
Attention :
Bien que la syntaxe alternative puisse fonctionner, elle est fortement déconseillée car elle laisse votre application vulnérable aux attaques par injection SQL . L'approche recommandée consiste à utiliser des espaces réservés, comme indiqué dans la déclaration correcte.
Compatibilité des bases de données :
De plus, certains backends de bases de données peuvent avoir des conventions de remplacement de chaînes différentes. Par exemple, SQLite utilise « ? » au lieu de '%s' pour les espaces réservés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!