2

MySQLデータベースから値を取得してintに変換しようとしていますが、それに3を追加して、更新intをデータベースに保存しようとしています。エラーなどは発生していません。データベースから取得する初期値は5以上です。 3を追加してデータベースを更新しようとしています。更新された値は8になるはずですが、代わりに3だけではありません。何が間違っているのかわかりませんので、助けてください。

index.phpからの私のphpコードは次のとおりです。

else if ($tag == 'addQuestion'){
                $username = mysql_real_escape_string($_POST['username']);
                $question = mysql_real_escape_string($_POST['question']);
                $tag1 = mysql_real_escape_string($_POST['tag1']);
                $tag2 = mysql_real_escape_string($_POST['tag2']);
                $tag3 = mysql_real_escape_string($_POST['tag3']);
                $time = $_POST['time'];
            $addQu = $db->addQuestion($username, $question, $tag1, $tag2, $tag3,$time);
        if($addQu){
            $q_id = $addQu["id"];
            $addQTA = $db->addQTA($username,$q_id,$question,$tag1,$tag2,$tag3);
            if($addQTA){
                $getKP= $db->getKP($username);
                if($getKP){

                                            //Having trouble at this part
                    $kp = (int)$getKP['karma_points'];
                    $ask_question_points = $kp + 3;

                    $updateKP= $db->updateKP($username,$ask_question_points);
                        if($updateKP){
                            $response["error"] =1;
                            $response["msg"] = "updateKP in AddQuestion Succesfull";
                            echo json_encode($response);
                    }
                    else{
                        $response["error"] =1;
                        $response["error_msg"] = "Error updateKP in AddQuestion";
                        echo json_encode($response);
                        }
                    }
                    else{
                        $response["error"] =1;
                        $response["error_msg"] = "Error inserting getKP in AddQuestion";
                        echo json_encode($response);
                        }
                }
            else{
                $response["error"] =1;
                $response["error_msg"] = "Error inserting QTA";
                echo json_encode($response);
                }
        }else{
            $response["error"] =1;
            $response["error_msg"] = "Error inserting question";
            echo json_encode($response);
            } 
            }

更新クエリを処理するDB_functions.phpの関数のコードは次のとおりです。

public function updateKP($username,$karma_points){
        $result = mysql_query("UPDATE users SET karma_points = '$karma_points' WHERE username = '$username'") or die(mysql_error());
        return($result);
        }

ありがとうございました!!

4

1 に答える 1

2

あなたは自分自身の頭痛を救い、1つのクエリでそれを行うべきです:

$result = mysql_query("UPDATE users SET karma_points = karma_points + $karma_points WHERE username = '$username'") or die(mysql_error());

これにより、値が。のkarma_pointsユーザーの列が自動的にインクリメントされます。PHPで計算してMySQLに送り返す代わりに、MySQLで実行してください。$username$karma_points

于 2012-07-22T01:16:52.650 に答える