由於某些原因,當我將我的php代碼從mysql更改爲mysqli時,一切都搞砸了。PHP和Mysql數據庫更新問題
例如,當用戶輸入評級時,我的mysql表會通過輸入一個新行並更新正確的行來更新兩次。我想知道我該如何解決這個問題,所以它只更新新行並檢查是否沒有行進入?
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);
}
}
舊的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);
}
}
您是否錯過了更新中的where語句? – 2010-01-15 13:00:06
之前的代碼工作,直到我將mysql更改爲mysqli。 – php 2010-01-15 13:02:44
如果您使用'INSERT ... ON DUPLICATE KEY UPDATE'(請參閱http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html),您可能會更好一些。得到了一個帶有唯一索引的列(它應該在你缺失的'WHERE'子句中,就像在klausbyskov的評論中一樣 - 你現在得到的將會增加*每行的'counter'值,並且設置'value'值到'$ _GET ['rating']'中的任何值)。 – 2010-01-15 13:09:02