Pour une raison quelconque, lorsque j'ai changé mon code php de mysql en mysqli, tout a été chamboulé. Par exemple, lorsqu'un utilisateur entre une évaluation, ma table mysql est mise à jour deux fois en entrant une nouvelle ligne et en mettant à jour la bonne ligne. Je me demandais comment puis-je corriger ce problème afin qu'il ne met à jour la nouvelle ligne et vérifie pour voir s'il n'y a pas de ligne, il en entre un?Problème de mise à jour de la base de données PHP & Mysql
code PHP
// function to insert rating
function rate(){
$dbc = mysqli_connect ("localhost", "root", "", "sitename");
$text = strip_tags($_GET['rating']);
$update = "update vote set counter = counter + 1, value = value + ".$_GET['rating']."";
$result = mysqli_query($dbc,$update);
if(mysqli_affected_rows() == 0){
$insert = "insert into vote (counter,value) values ('1','".$_GET['rating']."')";
$result = mysqli_query($dbc,$insert);
}
}
ancien code php
// function to insert rating
function rate(){
$text = strip_tags($_GET['rating']);
$update = "update vote set counter = counter + 1, value = value + ".$_GET['rating']."";
$result = mysql_query($update);
if(mysql_affected_rows() == 0){
$insert = "insert into vote (counter,value) values ('1','".$_GET['rating']."')";
$result = mysql_query($insert);
}
}
Ne manquez-vous pas une clause 'where' sur votre mise à jour? –
le code a travaillé avant jusqu'à ce que j'ai changé mysql en mysqli. – php
Il est peut-être préférable d'utiliser INSERT ... ON DUPLICATE KEY UPDATE (voir http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html), à condition que vous ayez a une colonne avec un index unique dessus (qui devrait être dans votre clause 'WHERE 'manquante, comme dans le commentaire de klausbyskov - ce que vous avez maintenant va incrémenter * la valeur' counter' de chaque ligne *, et mettre la 'valeur' valeur à tout ce qui est dans '$ _GET ['rating']'). –