Проблема обновления базы данных PHP & Mysql - PullRequest
2 голосов
/ 15 января 2010

Почему-то, когда я изменил свой php-код с mysql на mysqli, все испортилось.

Например, когда пользователь вводит рейтинг, моя таблица 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); 
    }
}

Ответы [ 2 ]

0 голосов
/ 15 января 2010

Вместо этого вы должны объединить два утверждения. Для этого вам потребуется ПЕРВИЧНЫЙ КЛЮЧ, возможно, с именем id.

// function to insert rating
function rate() {
    $dbc = mysqli_connect ("localhost", "root", "", "sitename");
    $text = strip_tags($_GET['rating']);
    $update = sprintf('INSERT INTO vote SET
                       id = 1,
                       counter = 1,
                       value = %1$d
                       ON DUPLICATE KEY UPDATE
                       counter = counter + 1,
                       value = value + %1$d',
                       $text);
    mysqli_query($dbc,$update); 
}
0 голосов
/ 15 января 2010

как насчет этого

if (mysqli_affected_rows($dbc) ==0){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...